피드로 돌아가기
Dev.toBackend
원문 읽기
Dependency 11개에서 3개로 축소, SRP 기반 God Object 해체 전략
Día 13: Tu clase tiene 50 métodos. Hace de todo. No hace nada bien.
AI 요약
Context
기능 추가 반복으로 인해 단일 클래스에 과도한 책임이 집중된 God Object Anti-pattern 발생. OrderService 내 50개 이상의 Method와 11개의 Dependency가 결합되어 코드 수정 시 예상치 못한 Side Effect 유발 및 테스트 복잡도 증가.
Technical Solution
- 단일 클래스 내 서로 무관한 도메인 로직을 분리하여 Single Responsibility Principle(SRP) 적용
- '변경의 이유'를 기준으로 Cohesion을 분석하여 OrderPricing, OrderNotification, OrderFulfillment, OrderReporting Service로 책임 분산
- OrderService의 역할을 Order Lifecycle 관리로 한정하여 도메인 핵심 로직의 응집도 향상
- Constructor Dependency 개수를 제어하여 클래스 간 Tight Coupling 제거 및 결합도 완화
- 각 서비스의 책임을 명확히 분리함으로써 Mocking 대상 축소 및 Unit Test 작성 효율 증대
Impact
- OrderService 내 Dependency 개수: 11개 → 3개로 감소
- 단일 클래스 내 Method 수: 50개 이상 → 서비스당 5개 미만으로 분산
Key Takeaway
SRP는 단순한 '기능 분리'가 아닌 '변경의 이유'를 일치시키는 설계 원칙임. 응집도가 낮은 Method들을 분리해 작은 서비스 단위로 재구성함으로써 시스템의 유지보수성과 확장성을 확보 가능.
실천 포인트
1. Constructor Dependency가 5개 이상인 클래스 식별
2. 클래스 내 Method들을 그룹화하여 서로 간의 상호작용 여부 검토
3. 새로운 Method 추가 시 '기존 클래스의 변경 이유와 일치하는가'를 자문
4. 기능 중심이 아닌 책임 중심으로 클래스를 분할하여 Cohesion 강화