코드 품질 개선 - 세션 44: 빈혈 모델(Anemic Domain Model)의 오진
·2025.08.29 11:00
도메인 모델의 빈혈화를 방지하려는 시도가 순환 의존성 및 설계 결함으로 이어지는 과정을 분석한다.
FooModel과 BarModel 간의 변환 로직을 각 모델 내부에 구현하면 Anemic Domain Model(빈혈 모델)을 피할 수 있다. 하지만 이 방식은 두 모듈 사이에 **순환 의존성(Circular Dependency)**을 발생시킨다.
이를 해결하기 위해 API 모듈과 구현(impl) 모듈로 분리하는 방식을 사용할 수 있으나, 이는 다음과 같은 부작용을 낳는다.
- **단일 진실 공급원(Single Source of Truth)**의 부재: 변환 로직이 여러 모듈에 분산되어 관리의 어려움이 생긴다.
- 구현 모듈 의존성: API가 아닌 구현 모듈에 의존해야 모델 변환이나 생성이 가능하다.
- 안전하지 않은 다운캐스팅: 인터페이스에 변환 메서드가 없어 런타임 오류 위험이 있는 다운캐스팅이 필요하다.
이러한 문제를 해결하기 위해 변환 로직을 특정 모듈로 통합하여 의존성 구조를 단순화하는 방안을 고려할 수 있다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.