피드로 돌아가기
Dev.toBackend
원문 읽기
Hardcoded Dependency 제거를 통한 객체 간 결합도 해소 및 Testability 확보
Code Smell 319 - Hardcoded Stateless Properties
AI 요약
Context
생성자 내부에서 Stateless Utility 클래스를 직접 인스턴스화하여 할당하는 Hardcoded Stateless Properties 패턴의 문제점을 분석함. 이러한 설계는 객체 간의 강한 결합을 유발하여 단위 테스트 시 Mocking을 불가능하게 하며 시스템의 유연성을 저하시키는 병목 지점으로 작용함.
Technical Solution
- Dependency Injection 도입을 통한 외부 의존성 주입 구조로의 전환
- Interface 정의를 통한 구체 클래스 의존성 제거 및 추상화 계층 구축
- Stateless 객체의 인스턴스 변수 저장 방식에서 파라미터 전달 방식으로의 변경
- 정적 메서드(Static Method) 활용 또는 로직 Inline화를 통한 불필요한 객체 상태 관리 제거
- 생성자 내
new키워드 사용을 제한하여 객체의 정체성과 도구의 역할을 명확히 분리하는 설계 적용
실천 포인트
- 생성자 내에서 `new` 키워드로 의존성 객체를 직접 생성하는 패턴이 있는지 검토 - Stateless 클래스가 인스턴스 변수로 유지되어 메모리 스택을 점유하고 있지 않은지 확인 - Mocking이 필요한 외부 협력 객체를 Constructor Injection 형태로 리팩토링 - 단순 유틸리티 성격의 로직은 상태를 갖지 않는 Static Method로 전환 고려