SPARTA 과제/SPRING

심화) LV 6 코드 리팩토링

kjw81024 2026. 3. 7. 16:33

1

UserService -  changePassword

새비밀번호 vs 기존비밀번호 확인 전에 잘못된 비밀번호인지 확인하는 로직이 나와야 할 것 같다

if 문 순서 변경 -> 처음 비밀번호가 틀렸다면 new pw 와 old pw 가 동일한지 확인하는 로직을 하는건 낭비이므로 순서를 수정했다

    @Transactional
    public void changePassword(long userId, UserChangePasswordRequest userChangePasswordRequest) {
        User user = userRepository.findById(userId)
                .orElseThrow(() -> new InvalidRequestException("User not found"));
                
        # 기존 비밀번호와 입력된 비밀번호가 동일한지 먼저 확인 
        if (!passwordEncoder.matches(userChangePasswordRequest.getOldPassword(), user.getPassword())) {
            throw new InvalidRequestException("잘못된 비밀번호입니다.");
        }
        
        # 위 if 문에서 걸리지 않았다면 
        # 기존 비밀번호와 새 비밀번호가 동일한지 확인 
        if (passwordEncoder.matches(userChangePasswordRequest.getNewPassword(), user.getPassword())) {
            throw new InvalidRequestException("새 비밀번호는 기존 비밀번호와 같을 수 없습니다.");
        }

        user.changePassword(passwordEncoder.encode(userChangePasswordRequest.getNewPassword()));
    }

2

CommentAdminService - deleteComment

delete 할 id 가 실제로 존재하는지 아닌지 확인하는 로직이 존재하지 않음

-> 댓글이 없어도 무조건 삭제완료 200이 뜸

@Transactional
public void deleteComment(long commentId) {
	# 받아온 commentId 를 통해 실제로 존재하는 comment 를 삭제하려고 하는건지 확인
    Comment comment = commentRepository.findById(commentId).orElseThrow(
            ()-> new InvalidRequestException("Comment not found")
    );

    commentRepository.delete(comment);
}

사실 이 부분은 log 를 찍을 때 사용하던 부분이라 처음에는 comment 가 존재하지 않아도 오류가 발생하지 않고 로그가 찍히는지 확인할 수 있어서 좋았다 ㅎㅎ...

그래도 해당 실습 이후에는 이미 삭제되거나 없는 comment 로 404 오류를 띄워주는 게 맞는 것 같아서 해당 부분 로직을 추가했다


3

userAdminService - changeUserRole

이전 Role 이랑 현재 Role 이랑 다른지 체크하는 로직이 없음

-> 똑같은 역할로 변경되어도 modifiedAt 이 업데이트 되므로 불필요한 로직이 추가되게됨

public void changeUserRole(long userId, UserRoleChangeRequest userRoleChangeRequest) {
    User user = userRepository.findById(userId).orElseThrow(
    	() -> new InvalidRequestException("User not found"));

    UserRole userRole = UserRole.of(userRoleChangeRequest.getRole());
    # userRole 로 변경하기 전에 기존 역할과 동일한지 확인하는 로직 추가 
    if (user.getUserRole() == userRole){
        throw new InvalidRequestException("동일한 역할로 변경할 수 없습니다.");
    }
    
    # 동일하지 않다면 업데이트하기 
    user.updateRole(UserRole.of(userRoleChangeRequest.getRole()));
}

 

 

'SPARTA 과제 > SPRING' 카테고리의 다른 글

Plus spring 필수 과제  (0) 2026.04.03
심화) LV 7 Test code  (1) 2026.03.07
심화) LV 5 API 로깅  (0) 2026.03.04
심화) LV 0~ LV 4 필수 문제풀이 과정  (0) 2026.03.04
숙련) 일정관리앱 트러블슈팅 (4)  (0) 2026.02.13