SOLID
: 객체 지향 프로그램 및 설계의 기본원칙 다섯개
Single Responsibility Principle(SRP)
: 단일 책임 원칙
→ 모든 클래스는 하나의 책임만을 가져간다.
! 클래스를 작게 만드는 것 ! 함수는 하나의 작업만 !
ex) 10-200룰: 함수는 10줄 이내, 클래스는 200줄 이내로 만드는 것
Open-Closed Principle(OCP)
: 개방 폐쇄 원칙
→ 확장에는 열려 있으나, 변경에는 닫혀 있어야 한다.
! if/switch문을 최대한 안 쓰는 방법을 통해 연습 ! ← 헉,,
→ protocol(or class)를 만들어 추상화 해서 사용한다.
→ dictionary 활용 (but. case가 자주 변경될 것 같을 때는 피하기, 분기분 없애고 싶을 때 제한적 사용)
Liskov Subtitution Principle(LSP)
: 리스코프 치환 원칙
→ 상위 슈퍼클래스를 하위의 서브클래스의 인스턴스로 바꾸어도, 프로그램 동작을 해치지 않아야 한다.
→ 자식이 부모의 동작을 제한해서는 안된다.
! protocol 활용하여, 다르게 구현하면 된다!
Interface Segregation Principle(ISP)
: 인터페이스 분리 원칙
→ 사용하지 않는 메서드는 구현하지 않는다.
→ 일반적인 인터페이스 << 각각의 구체적인 인터페이스 good
! protocol을 세분화 !
Dependency Inversion Principle(DIP)
: 의존관계 역전 원칙
→ 상위 클래스가 하위 클래스에 의존하지 않도록 한다!
→ 구체타입(class)에 대한 의존도를 낮추고, 추상타입(protocol)의 의존도를 높인다.
! protocol을 사용하여 추상화 진행 !
⇒ SOLID를 위반하는 많은 경우는 protocol
을 활용하여 해결하는 예제들을 볼 수 있었다.
🐾 이론으로만 남기지 않고, 활용할 수 있도록 노력하기