책
오브젝트
7장까지 읽었는데, 내가 생각할 때의 핵심 내용들을 정리해본다.
- 협력, 역할, 책임이 중요하다.
- 객체가 우선이 아니다. 메시지가 우선이다.
- 책임의 분배가 중요하다. 어떤 객체가 어떤 책임을 지게 할 것인가?
- 협력 컨텍스트 안에서, 어떤 책임을 지고 역할을 수행하는 객체를 설계할 것인가?
- 소프트웨어는 계속 변한다.
- 변화를 큰 비용없이 대응하기 위해선 설계를 해야 한다.
- 변화에 잘 대응하기 위해서는 높은 응집도, 낮은 결합도를 목표로 삼아야 한다.
- 높은 응집도, 낮은 결합도는 설계를 하는 이유이자 설계의 궁극적인 목표다.
- 설계는 트레이드 오프다. 응집도를 높일 것인가? 결합도를 낮출 것인가?
- 설계에 정답은 없다.