피드로 돌아가기
Code Smell 319 - Hardcoded Stateless Properties
Dev.toDev.to
Backend

Hardcoded Dependency 제거를 통한 객체 간 결합도 해소 및 Testability 확보

Code Smell 319 - Hardcoded Stateless Properties

Maxi Contieri2026년 4월 10일3beginner

Context

생성자 내부에서 Stateless Utility 클래스를 직접 인스턴스화하여 할당하는 Hardcoded Stateless Properties 패턴의 문제점을 분석함. 이러한 설계는 객체 간의 강한 결합을 유발하여 단위 테스트 시 Mocking을 불가능하게 하며 시스템의 유연성을 저하시키는 병목 지점으로 작용함.

Technical Solution

  • Dependency Injection 도입을 통한 외부 의존성 주입 구조로의 전환
  • Interface 정의를 통한 구체 클래스 의존성 제거 및 추상화 계층 구축
  • Stateless 객체의 인스턴스 변수 저장 방식에서 파라미터 전달 방식으로의 변경
  • 정적 메서드(Static Method) 활용 또는 로직 Inline화를 통한 불필요한 객체 상태 관리 제거
  • 생성자 내 new 키워드 사용을 제한하여 객체의 정체성과 도구의 역할을 명확히 분리하는 설계 적용

- 생성자 내에서 `new` 키워드로 의존성 객체를 직접 생성하는 패턴이 있는지 검토 - Stateless 클래스가 인스턴스 변수로 유지되어 메모리 스택을 점유하고 있지 않은지 확인 - Mocking이 필요한 외부 협력 객체를 Constructor Injection 형태로 리팩토링 - 단순 유틸리티 성격의 로직은 상태를 갖지 않는 Static Method로 전환 고려

원문 읽기