현재 LikeService와 ProductService에서 사용되는 예외 처리 방식 및 코드 구조에 일관성이 부족합니다. 알림 로직, DTO 변환 로직 등 다양한 부분에서 중복 코드가 존재하거나 코드 가독성이 떨어집니다. 이를 개선하여 코드 일관성을 확보하고 유지보수성을 향상시키고자 합니다.
개선사항
맞춤형 예외 클래스 활용 및 예외 처리 일관성 개선:
BusinessException과 GlobalExceptionHandler에서 예외 처리 방식을 일관되게 개선합니다.
LikeService와 ProductService의 예외 처리에서 RuntimeException 대신 맞춤형 예외 클래스를 정의하여 사용합니다. (UserNotFoundException, ProductAlreadyLikedException 등)
알림 주기 설정 유연화:
하드코딩된 NOTIFICATION_INTERVAL_DAYS 상수를 환경 설정 파일 (application.properties 또는 application.yml)로 이동하여 운영 환경에서 쉽게 조정할 수 있도록 합니다.
알림 로직 분리:
LikeService의 notifyPriceDrop() 메서드에 포함된 알림 전송 로직을 별도의 NotificationService 클래스로 분리하여 단일 책임 원칙을 유지합니다.
중복 코드 제거 및 코드 재사용성 강화:
ProductService의 searchProducts()와 searchProduct() 메서드에서 중복된 가격 계산 로직을 별도의 헬퍼 메서드나 유틸리티 클래스로 분리하여 유지보수성을 향상시킵니다.
getLikedProductsByUser() 메서드에서 ProductResponseDto로 변환하는 로직을 변환 전용 유틸리티 클래스로 분리하여 재사용성을 높입니다.
수정이 필요한 파일
BusinessException.java, GlobalExceptionHandler.java: 예외 처리 방식 일관성 확보 및 맞춤형 예외 클래스 정의
LikeService.java, ProductService.java: 예외 처리 일관성 개선 및 알림 로직 분리
NotificationService.java (신규 생성): 알림 전송 로직 분리
application.yml: 알림 주기 설정 추가
예상 효과
코드 일관성 확보를 통해 유지보수성을 향상시킵니다.
알림 로직의 분리를 통해 LikeService 클래스의 역할을 명확히 하고 코드 가독성을 높입니다.
환경 설정 파일을 사용해 알림 주기 등을 유연하게 조정함으로써 운영 환경 관리가 수월해집니다.
문제 설명
현재
LikeService
와ProductService
에서 사용되는 예외 처리 방식 및 코드 구조에 일관성이 부족합니다. 알림 로직, DTO 변환 로직 등 다양한 부분에서 중복 코드가 존재하거나 코드 가독성이 떨어집니다. 이를 개선하여 코드 일관성을 확보하고 유지보수성을 향상시키고자 합니다.개선사항
맞춤형 예외 클래스 활용 및 예외 처리 일관성 개선:
BusinessException
과GlobalExceptionHandler
에서 예외 처리 방식을 일관되게 개선합니다.LikeService
와ProductService
의 예외 처리에서RuntimeException
대신 맞춤형 예외 클래스를 정의하여 사용합니다. (UserNotFoundException
,ProductAlreadyLikedException
등)알림 주기 설정 유연화:
NOTIFICATION_INTERVAL_DAYS
상수를 환경 설정 파일 (application.properties
또는application.yml
)로 이동하여 운영 환경에서 쉽게 조정할 수 있도록 합니다.알림 로직 분리:
LikeService
의notifyPriceDrop()
메서드에 포함된 알림 전송 로직을 별도의NotificationService
클래스로 분리하여 단일 책임 원칙을 유지합니다.중복 코드 제거 및 코드 재사용성 강화:
ProductService
의searchProducts()
와searchProduct()
메서드에서 중복된 가격 계산 로직을 별도의 헬퍼 메서드나 유틸리티 클래스로 분리하여 유지보수성을 향상시킵니다.getLikedProductsByUser()
메서드에서ProductResponseDto
로 변환하는 로직을 변환 전용 유틸리티 클래스로 분리하여 재사용성을 높입니다.수정이 필요한 파일
BusinessException.java
,GlobalExceptionHandler.java
: 예외 처리 방식 일관성 확보 및 맞춤형 예외 클래스 정의LikeService.java
,ProductService.java
: 예외 처리 일관성 개선 및 알림 로직 분리NotificationService.java
(신규 생성): 알림 전송 로직 분리application.yml
: 알림 주기 설정 추가예상 효과
LikeService
클래스의 역할을 명확히 하고 코드 가독성을 높입니다.