unnecessary_final 린트 규칙: 지역 변수에 final 사용 피하기
unnecessary_final 린트 규칙: 지역 변수에 final 사용 피하기
unnecessary_final은 지역 변수를 선언할 때 final 대신 var를 쓰라고 알려주는 린트 규칙이에요. Effective Dart에는 널리 쓰이는 스타일이 두 가지 있는데, 이 규칙은 그중에서 var 스타일을 강제해요.
본문
설명
지역 변수를 선언할 때는 final이 아니라 var를 사용하세요. Effective Dart에 따르면 지역 변수 앞에 붙이는 데에는 크게 두 가지 스타일이 널리 쓰여요. 이 규칙은 var 스타일을 강제해요. 만약 반대로 final을 선호하는 스타일을 택하고 싶다면, 그때는 이 규칙 대신 prefer_final_locals와 prefer_final_in_for_each 규칙을 켜면 돼요.
필드(field)의 경우에는 얘기가 달라요. 필드에는 항상 final을 쓰는 게 권장되며, 그건 prefer_final_fields 규칙이 다뤄요.
BAD:
void badMethod() {
final label = 'Final or var?';
for (final char in ['v', 'a', 'r']) {
print(char);
}
}
GOOD:
void goodMethod() {
var label = 'Final or var?';
for (var char in ['v', 'a', 'r']) {
print(char);
}
}
지역 변수는 어차피 그 함수 안에서만 쓰이니까, 굳이 final을 붙이지 않아도 코드 흐름이 명확해요. 그래서 var로 통일하는 게 깔끔하죠.
호환되지 않는 규칙
unnecessary_final 린트는 다음 규칙들과 호환되지 않아요 (동시에 켜면 충돌해요):
prefer_final_localsprefer_final_parametersprefer_final_in_for_each
활성화 방법
unnecessary_final 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 규칙을 추가하면 돼요.
linter:
rules:
- unnecessary_final
대신 YAML 맵 문법을 사용해서 린트 규칙을 설정하고 있다면, linter > rules 아래에 unnecessary_final: true를 추가하면 돼요.
linter:
rules:
unnecessary_final: true