반응형

계속 이렇게 이미지 주워다 써도 괜찮으려나

한정되고, 명확한 상수의 집합. Enum 타입에 대해 공부해 보자.

특정 프로그램을 개발하는데 3가지 상태값을 가지는 기능이 있다고 해보자.

그 3가지 상태값은

1. 승인 - approved

2. 반려 - rejected

3. 대기 - pending

상태별로 지정할 값 이름을 정했다면 선언 후, 코딩을 시작하자.

void main() {
  String status1 = 'approved';
  
  if(status1 == 'approved'){
    print('승인되었습니다.');
  }else{
    print('반려 또는 대기 중입니다.');
  }
}

위 코드를 실행하면 아래와 같은 결과가 나타나며, 문제없이 수행된다.

승인되었습니다.

하지만 할당해준 값이 잘못되었거나 외부로 부터 넘겨받은 값이 한 글자라도 틀렸다면

무조건 반려 또는 대기중이라는 결과가 도출될것이다.

void main() {
  String status1 = 'approved';
  
  //만약 아래와 같이 실수했다면?
  if(status1 == 'approveb'){
    print('승인되었습니다.');
  }else{
    print('반려 또는 대기 중입니다.');
  }  
  //무조건 else를 타게되며 이런 문제는 종종발생한다.
}
반려 또는 대기 중입니다.

게다가 승인,반려,대기는 어떤값들인지 코멘트도 없다면 버그픽스에 큰 어려움이 있다.

이때 활용할 수 있는것이 바로 enum 타입 상수이다.

프로그램 상단, 그러니깐 자바로 치면 상수를 선언하는 영역, 전역변수 영역에 아래와 같이 선언한다.

enum Status {
  approved,
  rejected,
  pending
}

void main() {

}

이후 아래 변경된 코드를 살펴보자.

enum Status {
  approved,
  rejected,
  pending
}

void main() {
  //상수 Status타입의 변수를 선언하여, 상수 approved값을 할당한다.
  //(상수는 절대 변하지 않는 값.)
  Status status2 = Status.approved;
        
  //변수와 다르게 위험성을 최소화 하여 조건문을 실행할수 있다.
  //enum을 사용해서 한정된 옵션을 굉장히 효율적으로 사용할 수 있다.
  if(status2 == Status.approved){
    print('승인되었습니다.');
  }else{
    print('반려 또는 대기 중입니다.');
  }  
  
  //※상수에 포함된 목록들을 아래와 같이 확인해 볼 수도있다.
  print(Status.values.toList());
  
}
승인되었습니다.
[Status.approved, Status.rejected, Status.pending, Status.whyy]

이렇게 변치않는 고정값(상수)에 대해서는 개별적으로 코딩하지말고 상수로 지정하여 활용하는 것이

이후 업무협업이나 안정적인 코딩과 프로그램을 위해서 필요하다고 생각된다.

enum type 상수 스터디 끝.

반응형

+ Recent posts