일단, 객사오부터 시작해서 조영호 저자님의 객체지향 패러다임의 핵심은
역할
, 책임
, 협력
그리고 메시지
이 키워드로 정리가 될 수 있을 것 같다.
=> 역할(인터페이스)에게 책임(구현할 객체)을 할당하고 메시지로 협력하라.
그래서 객체를 설계를 할때부터 객체에게 어떤 역할, 책임이 있는지부터 생각하라고 계속 얘기한다.
구현을 먼저 생각하지 말고, 역할과 책임과 협력에 대해 먼저 생각하자.
객체가 책임을 수행하도록 하는 유일한 방법은 메시지를 전송하는 것
<객체지향 사실과 오해>를 보고나서 <오브젝트> 책이 잘 이해가 되는 책이다. 이 책은
객체지향 사실과 오해의 주석책이라는 인상을 강하게 받았다.
객체의 상태가 아니라 행동에 집중하라
메시지가 객체를 선택하게 하라.
협력이라는 Context 속에서 책임을 결정하라. 각각의 객체는 고립된 섬이 아니다.
인터페이스와 설계 품질에서 다음과 같은 법칙으로 결정한다고 한다.
Tell, Don't Ask
(시켜라, 묻지 말고) - 디미터 법칙(어떠한 자료를 갖는지 속사정을 몰라야 되는 원칙)
즉, 객체에게는 객체가 어떻게 하는지가 아니라 무엇을 하는지를 서술해야 한다.(How x, What o)
이미 <객.사.오>를 읽었을 때 많이 언급된 부분들이다. 다시 한번 읽으니 더 깊이 이해한 것 같다.
즉, 메시지를 정하고 그 메시지를 받을만한 객체를 식별하라
등 하는 개념에 대해서 저자가 정말 심혈을 기울이며 글을 많이 할애했다.
협력의 context
개념를 독자가 꼭 이해해주기를 진심으로 바라는 것 같다..
책임 주도 설계
를 이야기한 <객체 지향 사실과 오해>에서 언급한 내용들을 실제 코드와 더불어 더 확장한 내용들로 준비했다. 이런 점에서 책이 정말 알뜰한 것 같다.
마지막으로 다시 한번 잘 정리된 구절은 다음과 같다.
객체지향이 실세계를 모방해야 한다는 헛된 주장에 현혹될 필요가 없다.
도메인 추상화를 기반으로 하되 품질의 측면에서 필요하다면
설계자가임의로 창조한 객체들도 만들 수 있어야 한다.
292p
임의로 창조하는 객체도 있다는 점! 실세계 모방에 한계에 너무 갖혀있지 말자!
중간 매핑하는 인터페이스가 이에 속하지 않을까 싶다.
확실히 동음이의어 반복 같은 내용들이 많았다고 생각한다. 이미 한 이야기 아닌가? 하는 내용들을 계속 챕터를 갈수록 반복하는 것 같아 지루한 감이 없지 않다...
그리고 <클린코드>의 내용들에서 이야기한 내용들이 워낙 많다. 일단 객체지향의 원칙인 SOLID 원칙이라든지 상속, 추상화 등등 이미 알고 있는 내용들을 설명한 게 많아서 <클린코드> 책을 읽으신 분들이라면 빨리 넘어가는 부분이 많을 것이다.
그래도 code와 같이 설명된 부분에서 내가 잘 모르고 있던 내용들을 실질적인 와닿게 해준 책으론 이만한 책이 없는 것 같다. 우리나라에도 이 정도 수준의 책이 나온 것만 해도 대단하다고 생각한다.
한번 보고 이런 동음이의어 같은 인상을 꽤 많이 받았지만(마치 토비의 스프링같은...) 몇 회독 하면 더 달라질 것이라 생각돼 다음 회독이 기대가 되는 책이라 말하고 싶다.
책 <오브젝트
> 조영호