테스트하기 어려운 행위와 테스트하기 쉬운 행위를 단위 테스트 작성자가 분리하기 쉽게 하는 방법으로 고안된 디자인 패턴
험블 객체 패턴을 사용하면 두 부류의 행위를 분리하여 프레젠터와 뷰라는 서로 다른 클래스로 만들 수 있다.
뷰는 험블 객체이고 테스트하기 어렵다.
프레젠터는 테스트하기 쉬운 객체다.
아키텍처 경계를 완벽하게 만드는 데는 비용이 많이 든다. 쌍방향의 다형적 Boundary interface, Input과 Output을 위한 데이터 구조를 만들어야 할 뿐 아니라 두 영역을 독립적으로 컴파일하고 배포할 수 있는 컴포넌트로 격리하는 데 필요한 모든 의존성을 관리해야 한다.
애자일 커뮤니티에 속한 사람 중 많은 이가 이러한 선행적인 설계를 탐탁치 않게 여긴다. YAGNI(You Arent Going to Need It) 원칙을 위반하기 때문이다. 이 경우 부분적 경계를 구현해볼 수 있다.
YAGNI는 내가 자주 위반하는 원칙이기도 하다. 설계라는 게 사실 구현 전에 미리 구조를 잡는 거라서 이런 부분이 분명 있을 것 같았는데 이야기가 나와서 좋았다.