중복코드 문제
Querydsl을 활용해 서브쿼리를 작성할 때 리뷰 갯수를 가져오는 서브쿼리의 중복코드가 많았다.
같은 클래스에서는 메서드로 분리해 사용했지만, 다른 클래스에서는 관련 없는 클래스로부터 서브쿼리 메서드를 가져다 쓰는 구조였다.


핵심 문제는 서로 다른 클래스에 동일한 서브쿼리 메서드가 중복 작성된 것이었습니다.
특히, MemberCustomRepositoryImpl은 회원(Member)과 관련 없는 리뷰(Review) 서브쿼리 메서드를 포함하고 있어 단일 책임 원칙을 위반했습니다.
이러한 구조는 클래스 간 불필요한 의존성을 높여 코드의 재사용성과 유지보수성을 저하시킬 수 있다.
해결
서브쿼리 전용 유틸 클래스를 생성하고, static 메서드로 공통 서브쿼리 로직을 제공해 분리했다.
또한, 서브쿼리 전담 패키지를 만들어 관련 로직을 한 곳에 모아 유지보수와 확장성을 개선했습니다.
TotalAvgGrade 클래스는 평균 별점 계산 서브쿼리만을 책임지도록 설계하여, 단일 책임 원칙에 맞게 리팩토링했다.


공통 서브쿼리를 재사용할 수 있게 되어 클래스 간 불필요한 의존성이 제거됐습니다.
또한 코드의 일관성, 유지보수성 향상과 서브쿼리 관리가 구조적으로 명확해져 새로운 로직 추가도 수월해졌습니다.
'개발' 카테고리의 다른 글
| MSA 환경에서 이벤트 데이터 정합성 문제를 해결하기 위한 아웃박스 패턴 적용 (1) | 2025.12.13 |
|---|---|
| 프로젝트 아키텍처 설계 - 레이어드? 헥사고날? (5) | 2025.08.12 |
| 통계 데이터 비동기로 관리하기 (2) | 2025.08.01 |
| 개발 환경 통일을 위한 Docker Compose 도입 (5) | 2025.07.30 |
| Redis 캐시 구조 개선 : Redis Hash 적용하기 (1) | 2025.06.24 |