
아키텍처
코드 품질 개선 기법 27편: 티끌이 모여 태산이 되듯 의존성도 쌓이면
두줄요약
의존성 주입은 모든 곳에 적용할수록 좋은 것이 아니라 목적이 분명할 때만 쓰는 것이 중요하다고 설명했습니다. 단순 유틸리티나 모델은 내부 생성으로 단순화하고, 주입은 라이프사이클 관리나 구현 전환에 한정할 것을 제안했습니다.
핵심 내용
- 의존성 주입은 모든 의존 대상을 외부로 빼는 것이 아니라 목적이 분명할 때만 사용하는 설계 수단
- Locale처럼 환경에 따라 달라지는 값과 복잡한 리포지터리는 주입 대상으로 적합하지만, 단순 유틸리티나 모델은 내부 생성으로 충분
- 불필요한 주입은 암묵적 의존성 증가, 호출자 책임 확장, 값 연관성 파괴 같은 문제를 유발
적용해볼 점
- 생성자 파라미터를 설계할 때 라이프사이클 관리, 구현 전환, 의존성 역전 같은 목적 여부를 먼저 점검
- 참조 투명한 함수나 단순 클래스는 인터페이스 분리보다 직접 생성·사용으로 단순화 검토
- 공통 값이 여러 객체에 동일하게 적용돼야 한다면 주입 구조보다 값 일관성 검증 방식까지 함께 설계