간단한 고정 공개 API를 제공하면서 종속성 주입을 사용하여 테스트 가능한 디자인의 균형을 맞추는 방법을 고민했습니다. 내 딜레마는 사람들은 무언가를하고 싶을 수도 var server = new Server(){ ... }
있고 많은 의존성과 의존성 그래프를 만드는 것에 대해 걱정할 필요 Server(,,,,,,)
가 없다는 것입니다. 개발하는 동안 IoC / DI 프레임 워크를 사용하여 모든 것을 처리하기 때문에 너무 걱정하지 않아도됩니다 (모든 컨테이너의 수명주기 관리 측면을 사용하지 않으므로 더 복잡합니다).
이제 종속성이 다시 구현되지 않을 것입니다. 이 경우 컴포넌트 화는 확장 등을위한 이음새를 만드는 것이 아니라 테스트 가능성 (그리고 괜찮은 디자인)을위한 것입니다. 사람들은 99.999 %의 시간을 기본 구성으로 사용하려고합니다. 그래서. 종속성을 하드 코딩 할 수 있습니다. 그렇게하고 싶지 않다면 테스트를 잃게됩니다! 하드 코딩 된 종속성과 종속성을 취하는 기본 생성자를 제공 할 수 있습니다. 그것은 ... 지저분하고 혼란 스럽지만 실행 가능할 것입니다. 종속성 수신 생성자를 내부로 만들고 단위 테스트를 친구 어셈블리 (C # 가정)로 만들 수 있습니다. 공용 API를 정리하지만 유지 관리를 위해 숨겨져있는 숨겨진 함정을 남겨 둡니다. 명시 적으로보다는 암시 적으로 연결된 두 개의 생성자를 갖는 것은 내 책에서 일반적으로 나쁜 디자인입니다.
지금은 내가 생각할 수있는 최소한의 악에 관한 것입니다. 의견? 지혜?