[Flutter] enum 과 typedef
1. Enum
Enum은 열거형 타입이라고 해서 서로 연관된 상수를 모아놓은 집합이다. 2.17 버전 이후 기능이 향상되면서 Enum 타입을 데이터를 갖는 클래스처럼 사용할 수 있게 되었다.
ex) Enum 사용 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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을 선언하고 상수를 정의한다. status 상태 값에 따라 내용이 출력된다.
위 내용만 보면 그냥 String을 사용해도 무관해보인다. 그럼 enum을 사용하는 이유는 무엇일까?
-
Enum을 사용하면 얻을 수 있는 장점
- 가독성이 높아진다.
- 인스턴스 생성과 상속을 방지하고 상수 값의 타입에 대한 안정성을 보장한다.
- 상태와 행위에 대한 정의 및 관리가 명확해진다.
위의 예시 코드로 봤을 때 enum을 사용하면 정확히 대기, 승인, 거절에 대한 상태만 존재한다는 걸 쉽게 확인할 수 있고 내가 아닌 다른 개발자들도 코드에 대한 빠른 이해가 가능하다.
또한 단순 String으로 코드를 작성할 경우 오타가 나서 발생하는 오류도 방지할 수 있게 된다.
2. typedef
Dart에서는 함수 타입을 정의하기 위해 typedef를 사용한다. typedef를 사용하게 되면 함수의 타입을 명확히 표현할 수 있어 가독성이 높아지고, 특정 타입을 가진 함수를 많이 사용하는 경우 간결하게 코드를 작성할 수 있다는 장점이 있다.
하지만 typedef를 사용할 때 명시적으로 타입을 정의해야 하기 때문에 개발자가 추가적인 코드를 작성해야 할 수 도 있다.
ex)typedef 사용예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// signature
typedef Operation = inf Funtion(int x, int y, int z);
// 더하기
int add(int x, int y, int z) => x + y + z;
// 빼기
int sub(int x, int y, int z) => x - y - z;
// 계산
int cal(int x, int y, int z, Operation operation){
return operation(x, y, z);
};
//ex.
void main(){
Operation operation = add;
int result = operation(10,20,30);
print(result); //result : 60
Operation operation = sub;
int result = operation(10,20,30);
print(result); //result : -40
int result = operation(10,20,30,cal);
print(result); //result : -40
}
- typedef => typedef를 사용하면 함수의 타입을 명확하게 표현할 수 있어 가독성이 높아지고, 특정 타입을 가진 함수를 많이 사용하는 경우 간결한 코드를 작성할 수 있다. => typedef를 사용하면 함수의 타입을 명확하게 표현할 수 있어 가독성이 높아집니다. 또한, 특정 타입을 가진 함수를 많이 사용하는 경우 간결한 코드를 작성할 수 있습니다. 하지만, typedef를 사용할 때 명시적으로 타입을 정의해야 하므로 개발자가 추가적인 코드를 작성해야 할 수도 있습니다.