SOLID
- 좋은 벽돌로 좋은 아키텍처를 정의하는 원칙이다.
- 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 이들 클래스를 서로 결합하는 방법을 설명해준다.
- 코드 수준보다는 조금 상위에서 적용되며 모듈과 컴포넌트 내부에서 사용되는 소프트웨어 구조를 정의하는 데 도움을 준다.
- SOLID 원칙
- SRP (단일 책임 원칙)
- OCP (개방-폐쇄 원칙)
- LSP (리스코프 치한 원칙)
- ISP (인터페이스 분리 원칙)
- DIP (의존성 역전 원칙)
- SOLID 목적
- 변경에 유연하다.
- 이해하기 쉽다.
- 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 된다.
<aside>
💡 여기서 클래스는 단순히 함수와 데이터를 결합한 집합을 가리킨다. (객체 지향 소프트웨어에만 한정 X)
</aside>
SRP
- 하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다.
- 모듈 = 소스 파일
- 액터 = 해당 변경을 요청하는 한 명 이상의 사람들
- 단 하나의 일만 해야 한다는 의미로 받아들이면 안된다. (단 하나의 일만 해야 한다는 원칙은 함수에 해당)
- 단일 책임 원칙은 메서드와 클래스 수준의 원칙이다.
OCP
- 소프트웨어 개체는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
(소프트웨어 아키텍처를 공부하는 가장 근본적인 이유)
- 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 너무 많은 영향을 받지 않도록 한다.
LSP
- 부모 타입을 사용하는 곳에서 자식 타입을 넣어도 동작이 깨지면 안 된다.