이 책은 내가 개발을 시작하고 나서 처음으로 구매해서 읽어본 책이다. 정확하게는 선배님(항상 감사합니다. 하하)이 선물해주셔서 읽을 수 있었다.
기술에 대한 지식을 전달해주는 책은 아니다. 그런데도 처음에 읽었을 때는 무슨 말을 하는지 이해하기가 아주 힘들었다. 이 책을 읽었던 때가.. 작년 7 ~ 8월쯤이었던 거 같은데... 당최 역할이 뭐고 책임이 뭐고.. 알아먹기 쉽지 않았다. 그도 그럴 것이, 작년 4월에 처음 개발에 발을 들였는데.. 지금 생각해보면... 음... 당연한 것 같기도 하다.
그래도 덕분에 좋은 개념들을 머릿속에 채워 넣을 수 있었다. 시간이 흐르고, 점점 더 많은 코드를 작성해가면서 책 속의 내용이 아주 깊은 통찰에서 나온 것이라는 것을 깨닫는 중이다. 객체 지향에 대해서 조금 더 깊은 통찰을 갖고 싶다면 이 책을 읽어보길 바란다. 시간이 지날수록 객체 지향의 세계가 피부로 와닿는 것을 느낄 수 있을 것이다(본인은 이 책을 읽은 이후로, 객체 지향의 매력에 푹 빠졌다. 대학 시절에 했던 연극과 비슷하달까?).
본인은 명언을 좋아하는 편이다. 명언이 괜히 명언이겠는가. 짧은 문구에 깊은 무언가가 깃들어 있다고 생각한다. 그리고, 짧은 문구이지만 읽는 사람이 깊은 통찰을 얻을 수도 있다!
제목이라는 것은 일련의 무언가를 대표하는 이름과 같은 것이다. 이 책의 각 챕터를 시작할 때마다 제목과 함께 어떠한 명언(또는 문구?)이 한 줄씩 쓰여 있다. 이는 제목을 보조함과 동시에 해당 챕터의 주제를 관통하는 정체성을 띠고 있다고 생각된다. 챕터의 제목과 왜 그런 문구를 같이 사용했는지 고민해보면 좋을 것 같아서 간단히 나열해보고자 한다.
1. 협력하는 객체들의 공동체
시너지를 생각하라. 전체는 부분의 합보다 크다.
- 스티븐 코비(Stephen R. Covey)
2. 이상한 나라의 객체
객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발변하고 창조하는 것은 지식과 행동을 구조화하는 문제다.
- 레베카 워프스브록(Rebecca Wirfs-Brock)[Wirfs-Brock 1990]
3. 타입과 추상화
일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다.
- 키스 데블린(Keith Devlin)[Devlin 2003]
4. 역할, 책임, 협력
우리 모두를 합친 것보다 더 현명한 사람은 없다.
- 켄 블랜차드(Ken Blanchard)
5. 책임과 메시지
의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려있다.
- 앨런 케이[Kay 1998]
6. 객체 지도
유일하게 변하지 않는 것은 모든 것이 변한다는 사실뿐이다.
- 헤라클레이토스(Heraclitus of Ephesus)
7. 함께 모으기
코드와 모델을 밀접하게 연관시키는 것은 코드에 의미를 부여하고 모델을 적절하게 한다.
- 에릭 에반스(Eric Evans)[Evans 2003]