코딩하는 문과생

[Java] Enum 클래스 본문

프로그래밍/Java

[Java] Enum 클래스

코딩하는 문과생 2021. 4. 4. 14:17

[Enum클래스 장점]

  • 문자열과 비교해, IDE의 적극적인 지원을 받을 수 있습니다.
  • 허용 가능한 값들을 제한할 수 있습니다.
  • 리팩토링시 변경 범위가 최소화 됩니다.(내용의 추가가 필요하더라도, Enum 코드외에 수정할 필요가 없습니다. -> 공통코드라 생각하면 될 듯 하다.)

[개발 시 Enum클래스 사용하는 이유]

1. 데이터들 간의 연관관계 표현 가능

- 1,0 or true, false 처럼 동일한 의미를 다르게 처리하는 경우, Enum 클래스를 이용해 단일한 의미로 변경해 처리할 수 있다.

ex)

GUEST라는 Enum 상수 내에 동일한 의미를 가진 값을 넣어 참조가 가능하다.

@Getter
@RequiredArgsConstructor
public enum Role {

    GUSET("손님", false),
    USER("일반 사용자", true);

    private final String title;
    private final boolean auth;
    
    Role(String title, boolean auth){
    	this.title = title;
        this.auth = auth;
    }
    
    public String getStringValue() {
    	retrun title;
    }
    
    public boolean getStringValue() {
    	retrun auth;
    }
}

 

2. 상태와 행위를 한곳에서 관리

- 상태와 행위를 한곳에 묶어 관리함으로써 각각의 Code가 본인만의 계산식을 갖도록 지정할 수 있다.

- Enum클래스에 상태값에 따른 메소드를 묶음으로써, 코드를 좀 더 견고하게 작성하게 가능하다.

 

3 .데이터 그룹 관리

Enum이 없다면 분기로 태워서 전부 비교해야한다.

ex)

  • 가령 고객유형이 대량구매자(MG), 소량구매자(SG), 일반구매자(GG)로 나눠져있고, 이 모두를 고객구분으로 이루어진다면, 원래 같았으면 자바 내 코드 내 분기를 태워 처리했을 것이다.
  • Enum을 이용하면, 단순히 Enum 테이블에 값을 추가해 Enum상수 값을 참조하는 것으로 끝날 수 있다.

 

4. 관리 주체를 DB에서 객체로

- 일반적인 자바 레거시 시스템에서는 공통코드 테이블을 생성해 관리한다.

- 공통 코드는 일반적으로 자주 추가되지 않고, 최근에 CI/CD로 인해 자주 배포가 가능

- 따라서 DB가 아닌 객체에서 공통 코드나 값을 관리할 수 있다.

ex)

10-등록중, 20-의뢰, - 30-확정, 40-반려 라는 값을 가진 공통 테이블이 있다 하자.

이런 경우 공통 코드를 참조하기 위해 DB테이블을 조회해야 하는 번거로움 발생

자바 코드에 Enum 클래스로 관리하므로서 관리 주체를 객체로 변경

 

 

'프로그래밍 > Java' 카테고리의 다른 글

[Java] Generics  (0) 2020.01.18
[Java] 변수와 자료형  (0) 2020.01.05