unnecessary_breaks 린트 규칙: 생략 가능한 break 피하기

unnecessary_breaks 린트 규칙: 생략 가능한 break 피하기

unnecessary_breaks명시적으로 써줄 필요가 없는 break를 쓰고 있을 때 알려주는 린트 규칙이에요. Dart 3.0부터 non-empty switch case에서는 끝에 break를 써주지 않아도 자동으로 case를 빠져나가기 때문에, 굳이 붙인 break는 지워도 돼요.

출처: unnecessary_breaks

본문

설명

breaknon-empty switch case 문장에서 case 본문의 끝보다 앞에서 빠져나가야 할 때만 사용하면 돼요. Dart는 non-empty case에 대해 fallthrough(아래 case로 흘러내려가기) 실행을 지원하지 않아요. 그래서 non-empty switch case 문장의 끝에 붙어 있는 break는 실제로 아무 일도 하지 않아요. 그런 불필요한 break는 지워주는 게 깔끔하죠.

BAD:

switch (1) {
  case 1:
    print("one");
    break;
  case 2:
    print("two");
    break;
}

GOOD:

switch (1) {
  case 1:
    print("one");
  case 2:
    print("two");
}

case 본문이 끝나면 자동으로 switch를 빠져나가기 때문에, 굳이 break를 붙이지 않아도 돼요. 덕분에 코드가 훨씬 간결해지죠.

switch (1) {
  case 1:
  case 2:
    print("one or two");
}

빈 case(본문이 없고 바로 다음 case로 겹쳐지는 경우)는 그대로 두면 돼요. 이건 의도적인 fallthrough라서 그대로 유지돼요.

switch (1) {
  case 1:
    break;
  case 2:
    print("just two");
}

반대로 case 1에 아무 본문도 없이 break만 있는 경우에는, 명시적으로 아무것도 하지 않고 빠져나가겠다는 뜻이니까 이 break는 유지해야 해요.

⚠️ 참고: 이 린트는 언어 버전(language version)이 3.0 이상인 라이브러리에서만 불필요한 break를 리포트해요. Dart 2.19 이하에서는 명시적인 break가 여전히 필요하니까 그때는 지우면 안 돼요.

활성화 방법

unnecessary_breaks 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 규칙을 추가하면 돼요.

linter:
  rules:
    - unnecessary_breaks

대신 YAML 맵 문법을 사용해서 린트 규칙을 설정하고 있다면, linter > rules 아래에 unnecessary_breaks: true를 추가하면 돼요.

linter:
  rules:
    unnecessary_breaks: true

더 알아보기