Closed pythonstrup closed 2 months ago
제가 이해하기로는 객체를 먼저 고민하라는 것은, (책임과 책임을 수행할 주체)를 어떻게 가져갈 것인지 고민해보라는 말처럼 들렸습니다. 이런 고민 없이 설계를 한다면 현실세계에서 우리가 흔히 눈에 보이는 것들로만 클래스를 구성하게 될 것이다? 라고 생각해요.
저는 객체를 고민해보는 연습이 잘 안된채로 이 책을 처음 읽었을때, 저자의 설계에서 '왜 이런 객체까지 만들어내는거지? Money객체는 뭐고, discountPolicy객체는 또 뭐야. reservation객체는 뭐야'라고 혼란스러웠던 기억이 있습니다.
이번 챕터에서 인터페이스와 구현을 분리하라 라는 설계 원칙이 언급되었듯, 저는 항상 목적(what)과 달성 방법(how)을 잘 구분해야 한다고 생각해요. 도메인 개념을 자율적인 객체를 통해 표현하고 요구사항을 달성하여 변경이 쉬운 프로그램을 만드는 것이 객체지향의 가장 큰 목적, 그를 위해 자율적인 객체를 설계하는게 파생되는 목적이라고 봤을 때 그걸 코드 레벨에서 표현하는 것은 결국 이런 목적들을 달성하는 방법이라고 생각합니다. 목적과 방법의 우선순위가 전복되는 순간 본질에서 멀어지는 것과 다름없고, 클래스를 먼저 고민하면 결국 실제 해결해야하는 도메인에서부터 점점 멀어지게 되는거라는게 제 개인적인 견해입니다.