unnecessary_breaks 린트 규칙: 생략 가능한 break 피하기
unnecessary_breaks 린트 규칙: 생략 가능한 break 피하기
unnecessary_breaks은 명시적으로 써줄 필요가 없는 break를 쓰고 있을 때 알려주는 린트 규칙이에요. Dart 3.0부터 non-empty switch case에서는 끝에 break를 써주지 않아도 자동으로 case를 빠져나가기 때문에, 굳이 붙인 break는 지워도 돼요.
본문
설명
break는 non-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