34. int 상수 대신 열거 타입을 사용하라


정수 열거 패턴의 단점

public class Foods {
    public static final int APPLE_FUJI          = 0;
    public static final int APPLE_PIPPIN        = 1;
    public static final int APPLE_GRANNY_SMITH  = 2;

    public static final int ORANGE_NAVEL    = 0;
    public static final int ORANGE_TEMPLE   = 1;
    public static final int ORANGE_BLOOD    = 2;
}

위 클래스는 품종별 사과와 오렌지를 정수 상수처럼 묶어서 작성해놓은 Foods 클래스이다.

이런 정수 열거 패턴 기법에는 단점이 있으며 다음과 같다.

이러한 단점으로 정수 열거 패턴의 변형인 문자열 열거 패턴(String enum pattern)도 있지만, 이역시 더 나쁘면 나쁘지 좋지는 않다. 숫자가 아니라 문자를 사용하게되면서 미숙한 개발자는 문자열 값을 그대로 사용하며 하드코딩 할 수 있기 때문이다. 이는 런타임 버그와 문자열 비교에 따른 성능저하를 유발시킨다.

그래서 다시 본론으로 돌아와 위에서 언급한 여러 단점들때문에 열거 타입이라는 대안책을 자바에서 제시했고 이 대악책을 사용하면 위와같은 단점들을 모두 해결할 수 있다.

열거 타입