[CS] SOLID 원칙
[CS] SOLID 원칙
객체 지향 프로그래밍 설계의 다섯 가지 기본 원칙
Single responibility principle (단일 책임 원칙, SRP)
- 하나의 클래스는 하나의 책임만 가져야 한다.
- 동작을 담당하는 클래스는 동작 기능 만을 책임져야 한다.
- 이 클래스를 수정한다면 동작 관련 문제 해결을 위해 수정해야만 한다.
Open/closed principle (개방-폐쇄 원칙, OCP)
- 개체는 확장에 대해 열려 있어야 하고, 수정에 대해 닫혀 있어야 한다.
- 개체를 상속 받는 개체는 동작(추상화)은 변경할 수 있다.
- 하지만, 개체 자체를 수정할 수는 없다.
- 기존 코드 수정 없이 기능을 추가할 수 있어야 한다.
Liskov substitution principle (리스코프 치환 원칙, LSP)
- 상위 타입은 하위 타입으로 대체될 수 있어야 한다.
- 서로 교체했을 때, 무리 없이 작동해야 한다.
- 즉, 자료형을 만들 때 모든 경우를 고려해 만들어야 한다.
Interface segregation principle (인터페이스 분리 원칙, ISP)
- 클라이언트가 자신이 용하지 않는 메소드에 의존하지 않아야 한다.
- 하나의 큰 메소드가 아닌 여러 개의 작은 메소드로 분리하는 것이 좋다.
- 메소드는 최소한의 기능만 제공하며 하나의 역할에만 집중해야 한다.
Dependency inversion principle (의존성 역전 원칙, DIP)
- 추상화에 의존해야 하고, 구체화에 의존해선 안된다.
- 상위 모듈은 하위 모듈에 의존해선 안된다. 두 모듈 전부 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존해선 안된다. 세부 사항이 추상화에 의존해야 한다.
- 의존 관계를 맺을 때, 추상화된 클래스는 구현체 클래스를 의존하면 안된다.
This post is licensed under CC BY 4.0 by the author.