책임 주도 설계를 위해
- 데이터보다 행동을 먼저 결정하자
- 협력의 문맥에서 책임을 결정하자
- 메시지라는 것을 통해 통신을 하면서 주고받기 때문에 객체를 갖게 된 것
GRASP
- 책임을 할당할 때 지침으로 삼을 수 있는 원칙들이다
- 도메인 개념에서 시작을 한다, 이 도메인이 완전히 정확할 필요는 없고 출발점의 의미면 충분하다
- 올바른 도메인이란 존재하지 않고, 계속 변경이 일어난다고 생각된다.
- INFORMATION EXPERT 패턴 : 책임을 할당 할 때 메시지를 전송할 객체는 무엇을 원하는지, 수신할 객체는 누구인지를 고민하자
- CREATOR 패턴 : 객체를 생성할 책임을 어떤 객체에게 할당할지에 대한 지침을 제공(객체 A는 B에 책임 할당)
- B가 A 객체를 포함하거나 참조
- B가 A 객체를 기록
- B가 A 객체를 긴밀하게 사용
- B가 A 객체를 초기화 하는데 필요한 정보를 가지고 있다
클래스 응집도 판단하기
- 클래스의 응집도가 낮은지 판단하는 방법이 있다
- 클래스가 하나 이상의 이유로 변경돼야 한다면 응집도가 낮은 것 -> 변경의 이유를 기준으로 클래스 분리
- 인스턴스를 초기화하는 시점에 경우에 따라 서로 다른 속성들을 초기화 하고 있다면 응집도가 낮은 것 -> 초기화되는 속성을 기준으로 클래스를 분리
- 메서드 그룹이 속성을 사용하는지 여부로 나뉜다면 응집도가 낮은 것 -> 그룹을 기준으로 클래스 분리
Refactoring
- 책임 주도 설계를 한번에 하려고 하면 어려움을 느낄 경우가 많다
- 이러한 경우를 대신하여 최대한 빠르게 목적한 기능을 수행하는 코드를 작성하고, 코드에서 명확하게 드러나는 책임들을 올바른 위치로 옮기는 과정을 한다
책임을 할당하는 개념을 5장까지 해서 배우고, 그 개념을 코드에 현실적으로 적용하려면 리펙터링을 사용해야 한다는 글이 기억에 남는다. 리펙터링을 어떻게 하는지 왜 해야 하는지 와닿았던 단원이 였다.
'IT자료실 > 기술서적' 카테고리의 다른 글
오브젝트 - 기술서적 스터디 7단원-메시지와 인터페이스 (0) | 2023.07.24 |
---|---|
오브젝트 - 기술서적 스터디 6단원-메시지와 인터페이스 (0) | 2023.07.24 |
오브젝트 - 기술서적 스터디 4단원-설계품질 트레이드 오프 (0) | 2023.07.11 |
오브젝트 - 기술서적 스터디 3단원-역할 책임 협력 (0) | 2023.07.04 |
오브젝트 - 기술서적 스터디 2단원-객체지향 프로그래밍 (0) | 2023.07.04 |