no_default_cases 규칙 — switch에서 default 절 피하기
no_default_cases 규칙 — switch에서 default 절 피하기
enum이나 enum처럼 쓰이는 클래스를 switch로 다룰 때 default 절을 쓰면 나중에 case가 추가돼도 컴파일러가 모든 분기를 확인해 주지 못해요. 이 린트 규칙은 그런 경우를 잡아줘요.
출처: no_default_cases
본문
enum과 enum처럼 쓰이는 클래스를 switch로 다룰 때는 default 절을 쓰지 마세요.
enum처럼 쓰이는 클래스는 비추상(구체) 클래스 중에서 다음 조건을 만족하는 것을 말해요:
- private non-factory 생성자만 가진다
- 타입이 자신을 둘러싼 클래스인
static const필드를 두 개 이상 가진다 - 정의된 라이브러리 안에 그 클래스의 하위 클래스가 없다
기본 동작은 switch 문 밖에서 정의하세요.
좋지 않은 예:
switch (testEnum) {
case TestEnum.A:
return '123';
case TestEnum.B:
return 'abc';
default:
return null;
}
좋은 예:
switch (testEnum) {
case TestEnum.A:
return '123';
case TestEnum.B:
return 'abc';
}
// Default here.
return null;
활성화하기
no_default_cases 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 no_default_cases를 추가하면 돼요:
linter:
rules:
- no_default_cases
린트 규칙을 YAML 맵 문법으로 설정하고 있다면, linter > rules 아래에 no_default_cases: true를 추가하면 돼요:
linter:
rules:
no_default_cases: true