티스토리 뷰

donaricano-btn
반응형

지금 다니는 회사에 입사해서 가장 처음 받게 된 코드리뷰에서 지적당한 것이 열거 타입을 비교하는 부분 이었습니다.

 

public enum Size {
    
    SMALL, MEDIUM, LARGE, EXTRA_LARGE
}

 

저는 위와 같이 enum 으로 선언된 열거 타입의 변수들을 선언하고 다음과 같이 비교했습니다.

 

public String getMessage(Size first, Size second) {
    if (first.equals(second)) {
        return "It's same size.";
    }
    return "It's not same size.";
}

 

하지만 한 팀원 분께서 enum은 equals 메서드를 쓸 필요가 없다고 하셨습니다. 열거 타입은 인스턴스들이 고정되어 있으므로 간단하게 ==을 사용하면 됩니다. equals 를 실행한다고 해도 결국 == 검사를 수행하게 됩니다. 게다가 == 비교를 하는 편이 코드도 간단해지고 직관적이기 때문에 저희 팀의 컨벤션은 equals 메서드가 아니라 == 을 사용하는 것이었습니다.

 

public String getMessage(Size first, Size second) {
    if (first == second) {
        return "It's same size.";
    }
    return "It's not same size.";
}

 

 추가 적으로 toString 메서드도 구현할 필요가 없다. 열거 객체의 이름 주는 toString 메서드가 자동으로 만들어지기 때문입니다. 그리고 toString의 반대 역할을 하는 valueOf 메서드도 있다는 것을 기억해 두면 좋겠습니다. 그리고 존재하긴 하지만 사용하는 것을 조심해야 하는 메서드로 ordinal 이 있습니다.

반응형
donaricano-btn
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함