상세 컨텐츠

본문 제목

[Java] Enum

😎 지식/자바☕

by :Eundms 2024. 3. 11. 20:19

본문

일단, 참고URL을 먼저 명시하고 시작하려고 한다 

https://techblog.woowahan.com/2527/ 

 

Java Enum 활용기 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 E

techblog.woowahan.com

 


 Enum 사용시 장점

1. 허용 가능한 값을 제한할 수 있음

2. 리팩토링 변경 범위가 최소화됨

 

 

쿠팡이츠, 배달의 민족, 요기요와 같은 배달애플리케이션을 이용하여 음식을 주문하는 과정을 상상해보자 

 

클라이언트와 서버가 약속한 JSON 형식의 DTO가 다음과 같이 생겼다고 가정하자 

주문 요청후, 주문에 성공하여 주문이 완료된 상태를 나타내는 Response를 아래와 같이 리턴한다고 가정하자

public class ResponseDto {
    private String status;
    private String orderId;
    private String createdAt;
}

String으로 표시된 status는 ORDERED, Ordered, order 중 어떠한 값인지 예상할 수 없다

 

아래와 같이 바꾼다면,

1) Status에는 ORDERED, PREPARED, PICKUP, DELIVERED 가 있고

2) ORDERED, Ordered, order 중 ORDERED로 쓰이겠구나 예측할 수 있다 

public class RequestDto {
    private Status status;
    private String orderId;
    private String createdAt;
}
enum Status {
	ORDERED,
	PREPARED,
	PICKUP,
	DELIVERED
}

 

public class DeliveryService {
	public ResponseDto getNextStep(Status current, String orderId){
    	Status next = current.getNextStep();
        // 장점1) current 안에서 enum 이 정의된 순서 다음을 가져오도록 순회할 수 있다
     
        return ResponeDto.builder()
        .status(next)
        .orderId(orderId)
        .build();
    }
}

  

ORDERED로 사용했었지만, ORDER로 바꾸고 싶다고 가정하자 
     

if( ??? == "ORDERED"){ 
	// 아래와 같이 여러 곳에 String으로 박혀있다면... 
    // 1) 하나하나 찾아 고쳐야 한다
    // 2) 나중엔 Ordered, Order인지 뭔지 헷갈린다
}


enum은 한 곳만 바꾸면 된다 (IDE가 도와줌)

 

내가 나중에 봤을 때 이해하기 좋은 코드를 작성하자 

 

관련글 더보기

댓글 영역