SOLID 원칙의 목적
중간 수준―원칙을 모듈에 적용 할 수 있는 수준―의 소프트웨어 구조가 아래와 같도록 만드는 데에 있다.
- 유연한 변경
- 쉬운 이해
- 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반
SOLID 원칙 요약
- SRP (단일 책임 원칙 Single Responsibility Principle)
소프트웨어의 모듈은 변경의 이유가 단 하나여야만 한다. 하나의 모듈은 하나의 액터에 대해서만 책임져야 한다. 소프트웨어 시스템이 가질 수 있는 최적의 구조는 시스템을 만드는 조직 구조에 영향을 받는다는 콘웨이 법칙의 따름정리. - OCP (개방 폐쇠 법칙 Open-Colsed Principle)
기존 코드를 수정하기 보다는 새로운 코드를 추가하는 방식으로 시스템 행위를 변경할 수 있도록 설계해야 한다. 확장에는 열려있고 변경에는 닫혀있어야 한다. 1980년대 버트란트 마이어에 의해 유명해진 원칙. - LSP (리스코프 치환 법칙 Liskov Subsitiution Principle)
상호 대체 가능한 구성요소를 이용해 소프트웨어 시스템을 만들 수 있으려면 구성요소끼리 치환 가능해야 한다. 1988년 바바라 리스코브가 정의한 하위 타입에 관한 원칙. - ISP (인터페이스 분리 원칙 Interface Segregation Principle)
사용하지 않은 것에 의존하지 않아야 한다. - DIP (의존성 역전 원칙 Dependency Inversion Principle)
고수준 정책을 구현하는 코드는 저수준 세부사항을 구현하는 코드에 절대 의존해서는 안된다. 세부사항이 정책에 의존해야 한다. 구체적이고 변동성이 크다면 그 이름을 언급하면 안된다. 즉, 변동성이 큰 구체 클래스를 참조하거나 파생하지 않아야하며, 구체 함수를 오버라이드 하지 않는 것이 좋다.