개발을 하다 보면 당시에는 기억하고 이해할 수 있지만 시간이 지나거나

다른 개발자가 코드를 볼 때 많은 주석이 있음에도 이해하기 어렵고 유지보수에도 어려움을 겪는다.

 

하지만 디자인 패턴을 공부하면 조금 더 관리하기 쉽고, 확장이 쉬운 소프트웨어를 만들 수 있다.

2000년대 초반 로버트 마틴은 객채 지향 프로그래밍 및 설계의 5가지 원칙을 정의했고

이걸 다른 사람이 앞 대문자만 따서 SOLID라고 지었다.

 

SRP(Single Responsibility Priniciple) - 단일 책임 원칙

 

여기서 말하는 책임이란 하나의 클래스나 함수가 단 한 가지의 기능만 가져야 한다는 말이다.

나중에 책임져야할 기능이 많아지면 해당 부분 때문에 수정이나 삭제가 힘들고 복잡해진다.

 

하나의 함수가 하나의 기능만 한다면 함수 네이밍도 훨씬 직관적으로 될 것 같다.

좀 더 찾아보니 코드의 가독성 향상과 유지보수 용이도 이유로 뽑히고 있다.

 

 

OCP(Open Closed Principle) - 개방 폐쇄 원칙

 

컴포넌트, 클래스, 모듈, 함수 등은 확장에는 열려있고, 변경에는 닫혀있어야 한다는 말이다.

변경을 위한 비용은 가능한 줄이고, 확장을 위한 비용은 극대화해야 한다는 의미로, 요구사항의 변경이나

추가사항이 발생하더라도, 기존 구성 요소는 수정이 일어나지 말아야 하고 확장을 통해 재사용할 수 있어야 한다.

 

 

LSP(Liskov Substitution Principle) - 리스코프 치환 원칙

 

이름 때문에 쫄지 말자 사람 이름일 뿐이다.

부모 클래스와 자식 클래스 사이에는 일관된 행위가 있어야 한다는 원칙이다.

즉, 자식 클래스는 부모 클래스에서 가능한 행위를 수행해야 하며

객체 프로그래밍에서는 부모 클래스 인스턴스 대신 자식 클래스의 인스턴스를 사용해도 문제가 없다는 것을 의미한다.

(조금 더 공부해봐야겠다)

 

 

ISP(Interface Segregation Principle) - 인터페이스 분리 원칙

 

클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다.

즉, 어떤 클래스가 다른 클래스에 종속될 때에는 가능한 최소한의 인터페이스만을 사용해야 한다.

이를 하나의 일반적은 인터페이스보다는 여러 개의 구체적인 인터페이스가 낫다는 의미.

의존성을 줄여서 유지보수에 유리하게 한다는 말인데 맨 처음 말한 SRP(Single Responsibility Priniciple) - 단일 책임 원칙과 무슨 차이인지는 아직 잘 모르겠다. 

 

 

DIP(Dependency Inversion Principle) - 의존 역전 원칙

 

하위 모듈의 변경이 상위 모듈 변경을 요구하는 일은 없게 하라는 말이다.

이해하는데 시간이 좀 걸리긴 했는데 의존 관계를 맺을 때는 잘 변경되지 않는 것에만 의존하라는 말이다.

아래 사진에서 의미를 파악할 수 있다.

 

참조한 게시글: https://velog.io/@juhwan9408/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%84%A4%EA%B3%84-5%EC%9B%90%EC%B9%99-SOLID

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기