Biz Assist에서 낙찰방법 판정 상태를 나누면서
enum을 사용했다.
public enum BidAwardMethodStatus {
CONFIRMED,
LIKELY,
NOT_DETECTED,
UNKNOWN
}
enum은
정해진 값만 사용할 수 있게 만드는 타입이다.
예를 들어 판정 상태가
CONFIRMED
LIKELY
NOT_DETECTED
UNKNOWN
이 네 가지뿐이라면
문자열로 아무 값이나 넣게 두는 것보다 enum으로 제한하는 게 안전하다.
문자열로도 만들 수는 있다.
String status = "CONFIRMED";
근데 이렇게 하면
"CONFIRMED"
"confirmed"
"CONFIRM"
처럼 오타나 표현 차이가 생길 수 있다.
enum을 쓰면
BidAwardMethodStatus.CONFIRMED
처럼 미리 정의된 값만 사용할 수 있다.
낙찰방법 판정 결과에는
판정이 얼마나 확실한지도 같이 담아야 했다.
CONFIRMED
→ 구조화된 정보에서 명확하게 확인
LIKELY
→ 첨부문서에서 근거를 찾음
NOT_DETECTED
→ 다른 낙찰방법이 확인됨
UNKNOWN
→ 판단할 정보가 부족함
그래서 단순히 true / false로 나누기보다
상태를 여러 단계로 표현했다.
판정 상태뿐 아니라
근거가 어디서 왔는지도 enum으로 만들었다.
public enum BidAwardMethodSource {
STRUCTURED_DETAIL,
ATTACHMENT_DOCUMENT,
NOT_AVAILABLE
}
이렇게 하면
무슨 상태인지
+
어디서 판단했는지
를 각각 정해진 값으로 관리할 수 있다.
enum
→ 사용할 수 있는 값을 미리 정해두는 타입
String
→ 어떤 값이든 들어갈 수 있음
boolean
→ true / false 두 상태만 표현 가능
Biz Assist에서는
판정 상태와 근거 출처를 정해진 값으로 관리하기 위해 enum을 사용했다.
이번에 보니까 enum은
그냥 상수 모음이라기보다
상태나 종류처럼 선택지가 정해진 값을 표현할 때 쓰는 타입
이라고 생각하면 이해하기 쉬웠다.