enum을 사용하는 이유

조태진·2024년 4월 24일
0

자바 기초

목록 보기
6/6

만약 등급에따라서 할인율을 조정하는 코드를 만든다고 치자


public class DiscountService {
    public int discount(String grade, int price){
        int discountPercent = 0;

        if(grade.equals("BASIC")){
            discountPercent = 10;
        }else if(grade.equals("GOLD")){
            discountPercent = 20;
        }else if(grade.equals("DIAMOND")){
            discountPercent = 30;
        }else{
            System.out.println(grade +": 할인X");
        }

        //(10000 * 20) / 100
        return price * discountPercent / 100;
    }
}

이 코드는 아주 위험하다 왜냐하면

존재하지 않는 vip라는 등급을 discount 파라미터에 입력하면
할인 적용이 안되고

BASIC인데 BASICC이라고 오타를 낼 수도 있다.

이렇게 String 방식으로 사용하면 문제가 있다.

타입 안정성 부족:문자열은 오타가 생길 수 있고,유효하지 않은 값이 입력될 수 있다.

데이터 일관성:"BASIC","basic"등 다양한 형식으로 입력할 수 있기 때문에 일관성 down

컴파일 시 오류 감지 불가:이러한 문자열들은 컴파일 시에는 감지X, 런타임에서만 문제가 발견되기 때문에 디버깅 어려워짐.

해결방안:
특정 범위로 값을 제한
BASIC,GOLD,DIAMOND라는 정확한 문자만 전달되어야 한다. 하지만 String 타입은 아무 문자열이나 받을 수 있기 때문에 ENUM타입을 사용해서 코딩을 해야한다!

Enum의 장점:

타입 안정성 향상
: 열거형은 사전에 정의된 상수들로만 구성되므로, 유효하지 않은 값이 입력될 가능성이 없다.
이런 경우 컴파일 오류가 발생한다.

간결성 및 일관성
: 열거형을 사용하면 코드가 더 간결하고 명확해지며, 데이터의 일관성이 보장된다.

확장성
: 새로운 회원 등급에 타입을 추가하고 싶을 때, ENUM에 새로운 상수를 추가하기만 하면 된다.

0개의 댓글