혼란에서 깔끔한 코드로: 제 2회 Java 리팩토링 여정
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 중급 이상의 백엔드 개발자
- DDD(도메인 주도 설계) 및 Clean Architecture 패턴 적용 경험자
- 코드 리팩토링과 아키텍처 개선에 관심 있는 개발자
핵심 요약
@RestController
와@Bean
을 활용한 모놀리식 컨트롤러 분리- 컨트롤러, 서비스, 리포지토리, 도메인 엔티티로 4단계 분리
nameStartsWithUppercaseValidator()
빈 생성을 통해 도메인 외 인프라 로직 분리config
패키지로 이동하여 DDD 원칙 준수Utils
클래스에countLetters()
메서드 추가로 무용한 코드 재사용- 입력 이름의 문자 수 계산을 통해 의미 있는 처리 로직 강화
섹션별 세부 요약
1. **모놀리식 컨트롤러의 문제점**
ControllerService
와ModelRepoController
가 HTTP API, 비즈니스 로직, 메모리 저장소를 혼합- Tight Coupling으로 인해 테스트 불가능 및 유지보수 어려움
2. **Clean Architecture 적용: 4단계 분리**
- ThingController/ItemController (HTTP API)
- ThingService/ItemService (비즈니스 로직)
- ThingRepository/ItemRepository (데이터 액세스)
- Thing/Item (도메인 엔티티)
- 결과: 테스트 가능성 및 아키텍처 원칙 준수
3. **무용한 `uselessBean`의 재활용**
nameStartsWithUppercaseValidator()
빈 생성으로 비즈니스 규칙 강화@Bean
을 통해 도메인 외 인프라 로직 분리config
패키지 이동으로 DDD 원칙 준수
4. **Utils 클래스의 재사용**
countLetters()
메서드 추가로 입력 이름의 문자 수 계산- 컨트롤러에서 로깅을 통해 의미 있는 처리 로직 강화
결론
- Clean Architecture 및 DDD 적용을 통해 코드의 유지보수성과 확장성 향상
- 도메인 외 로직은
config
패키지로 분리하는 것이 아키텍처 정확성 보장 - 작은 리팩토링도 장기적인 코드 품질 개선에 기여
- 다음 단계: Clean Architecture 레이어 도입 및 DDD 기반 도메인 모델링 적용 예정