
이 책을 진심으로 추천한다. 같은 저자의 전작 "객체지향의 사실과 오해"가 객체지향을 이상한 나라의 엘리스라는 동화에 빗대에서 추상적으로 설명했다면, "오브젝트"는 실제 코드를 통해 객체지향의 핵심을 구체적으로 보여준다.
객체 지향적인 코드 작성법과 객체 간의 협력을 통한 설계 방법을 체계적으로 학습할 수 있다. 서버 개발자라면 객체지향과 함수형 프로그래밍을 모두 잘 활용해야 가독성 높은 코드를 작성할 수 있다고 생각하는데, 객체지향 코드 작성과 그 철학을 설명하는 데 이보다 좋은 책은 없다고 생각한다.
다만 이 책을 읽고 나면 "객체지향이 무엇인지는 이해했는데, 실제 서버 코드에는 어떻게 적용할까?"라는 의문이 드는 분이 있을 수 있다. 이때 DDD(Domain-Driven Design) 관련 서적을 함께 읽으면 서버 개발에서 객체지향을 실무에 적용하는 방법을 더 구체적으로 이해할 수 있을것이다. 객체 지향적으로 코드로 작성하면 좀 더 구조적인 프로그래밍으로 도메인로직과 비지니스로직을 분리하여 객체간의 협력으로 코드가 작동하는 코드로 개발할 수 있다.
이 책은 객체에게 묻지 말고 시키라고 말한다. 객체에 데이터를 요청하는 것이 아니라, 책임과 메시지를 통해 객체가 스스로 일하고 협력하도록 설계하는 방법을 배웠다. 프로그래밍을 배울 때 캡슐화, 상속, 다형성, 추상화 같은 개념들을 접하지만, 대부분 "그런 것이 있구나" 수준에서 끝나는 경우가 많다. 학교나 학원에서도 개념적인 설명에 그치고, 이러한 원칙들이 실제로 얼마나 효과적인 프로그래밍을 가능하게 하는지는 깊이 다루지 않는다. 하지만 이 책은 다르다. 객체지향의 핵심 개념들을 단순히 설명하는 데 그치지 않고, 왜 그것이 중요한지, 어떻게 효과적으로 활용할 수 있는지까지 상세히 보여준다.
책에서 학습한 내용을 바탕으로 레거시 결제 서버 개편을 진행했다. 새로운 PG 서버 연동과 함께 기존 코드를 객체지향적으로 리팩토링하는 작업을 진행했다. 기존 레거시 코드는 트랜잭션 스크립트 방식의 절차지향적 코드이고 if문이 복잡하게 중첩되어 있어 코드 읽기 어려웠다. 그래서 도메인 객체 중심의 설계를 하고 도메인 로직과 비즈니스 로직의 명확한 분리하여 각 코드가 적절한 위치에 배치된 구조로 payment 서버를 개편했다. 또 도메인 객체의 상태가 변경되는 로직이 도메인 객체에 모이고 그것을 한눈에 파악할 수 있도록했다. 결과적으로 코드의 응집도와 코드 가독성이 크게 향상되었고, 훨씬 깔끔하고 유지보수하기 쉬운 구조가 되었다. 동일한 작업을 하는 코드여도 객체지향 패러다임을 적용한 코드는 가독성이 뛰어나고 유지보수가 쉬워지는 것을 많이 느꼈다.