'Type'에 대한 switch 문은 피해요
'Type'에 대한 switch 문은 피해요
runtimeType을 기준으로 switch를 돌리면 타입 안전하지 않아요. 클래스 계층이 바뀌면 버그가 생기기 쉬우니, 대신 변수에 대한 패턴 매칭을 쓰는 게 좋습니다.
출처: switch_on_type
본문
Type에 switch를 쓰는 것은 피하세요.
Type에 대해 switch를 쓰는 것은 타입 안전하지 않아요. 클래스 계층이 바뀌면 버그로 이어질 수 있죠. 대신 변수에 대한 패턴 매칭을 사용하는 걸 권해요.
나쁜 예:
void f(Object o) {
switch (o.runtimeType) {
case int:
print('int');
case String:
print('String');
}
}
좋은 예:
void f(Object o) {
switch(o) {
case int():
print('int');
case String _:
print('String');
default:
print('other');
}
}
활성화 방법
switch_on_type 규칙을 사용하려면 analysis_options.yaml 파일의 linter > rules 아래에 switch_on_type을 추가하면 돼요:
linter:
rules:
- switch_on_type
린트 규칙을 YAML 맵 문법으로 설정한다면, linter > rules 아래에 switch_on_type: true를 추가하면 되고요:
linter:
rules:
switch_on_type: true
더 알아보기
- Dart linter rules — 다른 린트 규칙들 살펴보기