IT자료실/기술서적

오브젝트 - 기술서적 스터디 5단원-설계품질 트레이드 오프

Ramda 2023. 7. 11. 22:07

책임 주도 설계를 위해

  • 데이터보다 행동을 먼저 결정하자
  • 협력의 문맥에서 책임을 결정하자
    • 메시지라는 것을 통해 통신을 하면서 주고받기 때문에 객체를 갖게 된 것

GRASP

  • 책임을 할당할 때 지침으로 삼을 수 있는 원칙들이다
  • 도메인 개념에서 시작을 한다, 이 도메인이 완전히 정확할 필요는 없고 출발점의 의미면 충분하다
  • 올바른 도메인이란 존재하지 않고, 계속 변경이 일어난다고 생각된다.
  • INFORMATION EXPERT 패턴 : 책임을 할당 할 때 메시지를 전송할 객체는 무엇을 원하는지, 수신할 객체는 누구인지를 고민하자
  • CREATOR 패턴 : 객체를 생성할 책임을 어떤 객체에게 할당할지에 대한 지침을 제공(객체 A는 B에 책임 할당)
    • B가 A 객체를 포함하거나 참조
    • B가 A 객체를 기록
    • B가 A 객체를 긴밀하게 사용
    • B가 A 객체를 초기화 하는데 필요한 정보를 가지고 있다

클래스 응집도 판단하기

  • 클래스의 응집도가 낮은지 판단하는 방법이 있다
    • 클래스가 하나 이상의 이유로 변경돼야 한다면 응집도가 낮은 것 -> 변경의 이유를 기준으로 클래스 분리
    • 인스턴스를 초기화하는 시점에 경우에 따라 서로 다른 속성들을 초기화 하고 있다면 응집도가 낮은 것 -> 초기화되는 속성을 기준으로 클래스를 분리
    • 메서드 그룹이 속성을 사용하는지 여부로 나뉜다면 응집도가 낮은 것 -> 그룹을 기준으로 클래스 분리

Refactoring

  • 책임 주도 설계를 한번에 하려고 하면 어려움을 느낄 경우가 많다
  • 이러한 경우를 대신하여 최대한 빠르게 목적한 기능을 수행하는 코드를 작성하고, 코드에서 명확하게 드러나는 책임들을 올바른 위치로 옮기는 과정을 한다

책임을 할당하는 개념을 5장까지 해서 배우고, 그 개념을 코드에 현실적으로 적용하려면 리펙터링을 사용해야 한다는 글이 기억에 남는다. 리펙터링을 어떻게 하는지 왜 해야 하는지 와닿았던 단원이 였다.