맨 처음 설계 과정에서 페어와 함께 클래스다이어그램을 그렸다.
모든 세부사항, 구체적인 연관관계를 그렸다.
하지만 UML 정식 형식과 많이 달랐고, 너무 복잡해 이해하기 힘들었다.
페어프로그래밍을 종료하고, [UML 실전에서는 이것만 쓴다 / 로버트 C.마틴] 책을 보았다.
그런데 오히려 로버트 마틴은 "세세하게 이것저것 다 적어놔봤자 알아보기만 힘들고,
구체적인것은 코드 구현시점에 정하면 된다. 모두가 잘 이해할 수 있도록 간소화 된 형식으로 UML을 작성해야 한다."
라고 했다.
점선, 집합, 합성도 그냥 구분하지 말고, 단순히 관련 관계만 표시하라고 했다.
로버트 마틴의 말을 참고해 최대한 이해하기 쉽도록 다시 UML을 그렸다.
핵심 비즈니스 로직을 가지는 도메인 객체들을 domain 패키지에, UI와 관련된 객체들을 view 패키지에 구현했다.
MVC 패턴 기반으로 view 패키지의 객체가 domain 패키지 객체에 의존할 수 있지만,
domain 패키지의 객체는 view 패키지 객체에 의존하지 않도록 구현했다.
Validation을 최대한 도메인 객체 내부의 생성자 했다.
아무리 생각해도 도메인 내부에 어울리지 않는 Validation 작업들은 도메인 외부의 InputView의 함수에서 했다.