지역 변수는 재할당하지 않으면 final로 선언해요

지역 변수는 재할당하지 않으면 final로 선언해요

prefer_final_locals 린트 규칙은 나중에 재할당하지 않는 변수 선언은 final로 하라고 권하는 규칙이에요. Stable 상태이고 자동 수정도 가능해요.

출처: Prefer final for variable declarations if they are not reassigned.

본문

코드에서 나중에 재할당하지 않는 변수는 final로 선언하세요.

변수를 가능하면 final로 선언하는 게 좋은 습관인 이유는, 실수로 값을 다시 바꾸는 일을 막아 주고 컴파일러가 최적화를 할 수 있게 해 주기 때문이에요.

BAD — 재할당하지 않는데 var로 선언했어요.

void badMethod() {
  var label = 'hello world!'; // LINT
  print(label);
}

GOODfinal로 선언했어요.

void goodMethod() {
  final label = 'hello world!';
  print(label);
}

GOOD — 실제로 값을 바꾼다면 var로 남겨도 괜찮아요.

void mutableCase() {
  var label = 'hello world!';
  print(label);
  label = 'hello world';
  print(label);
}

함께 쓰면 안 되는 규칙

prefer_final_locals 린트는 다음 규칙과 충돌해요.

  • unnecessary_final

규칙 켜기

analysis_options.yaml 파일의 linter > rules 아래에 prefer_final_locals를 추가하면 돼요.

linter:
  rules:
    - prefer_final_locals

YAML 맵 문법으로 설정한다면 이렇게 써요.

linter:
  rules:
    prefer_final_locals: true

더 알아보기

  • 함수 안에서 값을 다시 할당하는 변수라면 var로 두는 게 자연스러워요.