본문 바로가기
Dart

[Dart] 언어 기본기 - Enum편

by 가드 2022. 12. 7.
728x90

※ 시작 전 참고사항 : 다트패드테스트 진행

Enum이란?

enumerated type의 줄임말로 열거형이라 부르는데 값의 집합을 이루는 자료형이다. 많은 언어에서 사용되며 Dart에서도 동일하게 상수 역할을 하는 식별자로써 사용된다.

Enum을 사용하면서 얻는 장점은

  • 코드가 단순해지며 가독성을 높일 수 있다.
  • 인스턴스 생성과 상속을 방지하고 상수값의 타입에 대한 안정성을 보장한다.
  • 구현의 의도를 분명하게 알 수 있다.
  • 상태와 행위 정의에 대한 관리가 명확해진다.
enum Status {
  PENDING, // 대기
  APPROVED, // 승인
  REJECTED // 거절
}

void main() {
  Status status = Status.PENDING;
  switch (status) {
    case Status.PENDING:
      print('대기중입니다.');
      break;
    case Status.APPROVED:
      print('승인되었습니다.');
      break;
    case Status.REJECTED:
      print('거절되었습니다.');
      break;
    default:
      print('알수없는 상태입니다.');
      break;
  }
}
  • enum을 선언하고 enum안에는 상수값들을 정의한다. 예제로 Status Enum에 대기, 승인, 거절에 대한 상수를 정의하였다.
  • 조건문으로 Enum 상태 값을 받고 해당되는 상태 값에 print 함수로 내용을 출력했다. PENDING 상수값이 조건이므로 print('대기중입니다.'); 실행된다.

enum을 사용하지 않고 String으로 비교해도 되지 않을까?

void main() {
  String status = 'PENDING';
  switch (status) {
    case 'PENDING':
      print('대기중입니다.');
      break;
    case 'APPROVED':
      print('승인되었습니다.');
      break;
    case 'REJECTED':
      print('거절되었습니다.');
      break;
    default:
      print('알수없는 상태입니다.');
      break;
  }
}

물론 가능하다. 위의 테스트 코드처럼 Enum을 적용한 테스트 코드와 동일하게 동작한다.

하지만 Enum을 사용하게 되면 정확하게 대기, 승인, 거절에 대한 상태 값만 존재한다라는 걸 명시할 수 있고 명시하게 되면 나 이외에 다른 개발자들도 상태 값에 대해 인지를 할 수 있게 되어 개발에 대한 오류를 줄일 수 있다. 그리고 String으로 개발하게 되면 오타가 나버린다면 원하는 동작이 불가능해진다. 오타에 대한 오류에 대해 방지할 수 있게 된다.

상수값들의 집합인 Enum을 생성하여 나와 다른 개발자들 간의 약속을 정하여 개발하는 게 유지보수, 추가 개발 건에 대한 장점이 명확해진다.

 

300x250

댓글