10장. 클래스
클래스는 작아야한다
클래스가 맡은 책임을 줄이자!
단일 책임 원칙 (SRP Single Responsibility Principle)
클래스 이름을 명확히 하자
클래스의 이름은 클래스의 책임을 보여줘야 한다.
클래스는 추상화수준이 일치해야한다
클래스가 다른 클래스에 의존할 때, 두 클래스의 추상화 수준이 일치해야 한다.
OCP에 맞추어 작성하자
Open-Closed Principle
확장
에 대해개방적
이고,변경
에 대해서는폐쇄적
이어야 한다.
응집도 - Cohesion
객체지향에서는 모든 것이 변한다. 오브젝트에 대한 설계와 이를 구현하는 코드가 변한다. 관심사의 분리(Separation of Concerns) 는 관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능한 따로 떨어져서 서로 영향을 주지 않도록 분리하는 것이라고 생각할 수 있다.
DIP를 준수하자
구현 클래스에 의존하는 것이 아니라 추상화된 인터페이스나 추상 클래스에 의존해야한다.
낮은 결합도는 높은 응집도보다 더 민감한 원칙이다.
느슨한 연결은 관계를 유지하는데 꼭 필요한 최소한의 방법만 간접적인 형태로 제공하고, 나머지는 서로 독립적이고 알 필요도 없게 만들어주는 것이다. 결합도가 낮아지면 변화에 대응하는 속도가 높아지고, 구성이 깔끔해진다. 또한 확장하기에도 매우 편리하다.
SOLID
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
컴포지션
상속보다는 컴포지션(Composition)을 사용하여 재사용성을 높이자.
is-a 관계보단 has-a 관계로 가자
상속은 결합도를 높이고, 유연성을 저하시킬 수 있습니다. 따라서, 컴포지션을 사용하여 클래스를 구성하는 것이 좋다.
Last updated