'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

더 알아보기