unnecessary_final 린트 규칙: 지역 변수에 final 사용 피하기

unnecessary_final 린트 규칙: 지역 변수에 final 사용 피하기

unnecessary_final지역 변수를 선언할 때 final 대신 var를 쓰라고 알려주는 린트 규칙이에요. Effective Dart에는 널리 쓰이는 스타일이 두 가지 있는데, 이 규칙은 그중에서 var 스타일을 강제해요.

출처: unnecessary_final

본문

설명

지역 변수를 선언할 때는 final이 아니라 var를 사용하세요. Effective Dart에 따르면 지역 변수 앞에 붙이는 데에는 크게 두 가지 스타일이 널리 쓰여요. 이 규칙은 var 스타일을 강제해요. 만약 반대로 final을 선호하는 스타일을 택하고 싶다면, 그때는 이 규칙 대신 prefer_final_localsprefer_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_locals
  • prefer_final_parameters
  • prefer_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

더 알아보기