Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public boolean checkApprover(Long memberId, Long projectId) {
projectAuthorizationRepository
.findByProjectIdAndMemberIdAndIsActive(projectId, memberId, YesNo.YES);

if(authorization.isPresent() && APPROVER.equals(authorization.get().getAuthorizationCode())) {
if(authorization.isPresent() && Objects.equals(APPROVER.toUpperCase(), authorization.get().getAuthorization())) {
return true;
}
log.error("memberId : {} not have authorization in project : {}", memberId, projectId);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 패치를 리뷰한 결과는 다음과 같습니다:

  1. 버그 위험:

    • authorization.get().getAuthorization()이 반환하는 값의 대소문자를 구분하지 않기 때문에, APPROVER를 모두 대문자로 변환하여 비교하는 것은 좋습니다. 하지만, authorization.get().getAuthorization() 값의 대소문자가 섞여 있을 경우, 원하는 결과가 아닐 수 있습니다. 값이 null일 경우에 대한 판단이 필요합니다.
  2. 성능 문제:

    • authorization.get()을 두 번 호출하고 있습니다. 이를 한 번만 호출하여 변수에 저장한 후 사용하는 것이 성능적으로 더 효율적입니다.
  3. 가독성:

    • Objects.equals() 사용은 null 체크를 포함하고 있어 안전하지만, 명시적인 null 체크를 추가하면 코드의 가독성을 높일 수 있습니다.
  4. 로깅:

    • 에러 로깅 메시지가 충분하지 않을 수 있습니다. 추가적인 정보(예: authorization 레이블 등)를 주면 문제 해결 시 유용할 겁니다.

개선한 코드는 다음과 같이 작성할 수 있습니다:

public boolean checkApprover(Long memberId, Long projectId) {
    Optional<Authorization> authorization = projectAuthorizationRepository
            .findByProjectIdAndMemberIdAndIsActive(projectId, memberId, YesNo.YES);
    
    if (authorization.isPresent()) {
        String authCode = authorization.get().getAuthorization();
        if (authCode != null && APPROVER.equals(authCode.toUpperCase())) {
            return true;
        }
    }
    
    log.error("memberId : {} does not have authorization in project : {}", memberId, projectId);
    return false;
}

위와 같이 코드를 수정함으로써 가독성, 성능, 안전성을 향상시킬 수 있습니다.

Expand Down
Loading