동료 개발자의 추천으로 읽게 된 책인데 그 분께 굉장히 고맙다.
책이 기술 서적이 아니라 인문학 서적을 읽는 듯한 느낌을 받았다. 덕분에 굉장히 재밌게 읽힌다.
그리고 중요한 내용을 비유를 통해서 쉽게 설명하며 반복을 통해 뇌에 새겨버린다.
SI 업계에 들어온지 3년이 지났다. 그동안 컨트롤러 - 인터페이스 - 구현체의 단순한 구조와 가끔씩 공통 Util 하나 추가해서 개발하는데 너무 익숙해져버렸다.
그동안 사실 객체지향을 쓴다고 하면 그냥 클래스를 쓰면 되는건줄 알았다.
그런데 이 책을 읽으니, 객체지향 프로그래밍에 대해 무엇을 오해했는지, 객체지향이란 무엇인지 조금은 알게된거 같다.
책의 내용이 방대하여 각 장마다 한 줄로 요약하자면
1장에서는 역할, 책임, 협력 그리고 객체가 핵심을 명시한다.
2장에서는 객체의 상태와 행동에 대해서 설명하고, 은유에 대한 개념을 설명한다.
3장에서는 중요한 추상화에 대해 설명하며, 개념에 대한 설명, 타입과 동적/정적 모델에 대해 설명한다.
4장에서는 역할, 책임, 협력을 다시 한번 강조하면서 각각의 특징을 설명한다.
5장에서는 메시지와 책임, 그리고 이를 통해 다형성과 메시지의 특성에 대해서 설명한다. 그리고 이를 인터페이스의 관점에서 설명하고 구현이 나오며 인터페이스와 구현의 분리 원칙, 캡슐화에 대해 이야기 한다. 그리고 책임의 자율성이 얼마나 중요한지 설명한다. 저자가 목차에서 단 하나의 장만 읽겠다면 5장을 읽으라고 했는데, 정말 중요한 내용이 많이 나온다.
6장에서는 기능 설계와 구조 설계에 대해서 설명하며 각각의 설계에 필요한 도구 (도메인 모델과 유스케이스)를 설명해준다. 그리고 표현적 차이라는 개념을 설명해준다. 그리고 이를 통합시키는 방법에 대해서 설명해주며 책임-주도 설계를 설명한다. 그리고 기능 변경을 흡수하는 안정적인 구조를 이야기하며 객체지향의 강점을 강조한다.
7장에서는 마틴 파울러의 개념,명세,구현 관점에서 클래스를 바라보는 방향을 설명하고 이를 직접 커피 전문점을 실제로 설계 구현하면서 지금까지 설명했던 내용을 코드로 보여준다.
그리고 책을 한 줄로 요약하자면
객체들의 자율적인 책임과 협력, 메시지에 집중한 객체지향 설계로 복잡함을 추상화하고 매번 변경되는 요구사항에 대응하자.
실제로 현업에서 이 책에서 배운내용을 조금씩 써먹고 있어서 신기하다. 고객의 요구사항이 조금 다르게 보이게 되었으며 설계를 할때도 좀 더 체계적으로 할 수 있게 된거 같다. 이 책을 읽고 실제로 유스케이스를 작성해보니까, 고객의 요구사항을 더 잘 이해할 수 있게 되었고, 무엇을 질문해야 할지도 도출해낼 수 있었다. 이제 도메인 모델도 한 번 작성해봐야겠다. 자바 개발자라면 한 번 꼭 읽어봐야 하는 책이 아닌가 싶다. 자신의 일을 다른(또는 올바른) 관점에서 바라볼 수 있는 기회가 될 것 같다.
'도서 > 도서리뷰' 카테고리의 다른 글
직장에서 쓸모 있는 고수의 업무노트 (1) | 2023.11.14 |
---|---|
도파민네이션, 중독의 원인 (0) | 2023.06.19 |
곽재식의 먹는 화학 이야기 (0) | 2023.06.17 |