상수 값 선언은 final보다 const로 해요

상수 값 선언은 final보다 const로 해요

prefer_const_declarations 린트 규칙은, 값이 상수로 정해지는 선언은 final 대신 const를 쓰라고 권하는 규칙이에요. Stable 상태이고, 코드 수정도 자동으로 가능해요.

출처: Prefer const over final for declarations.

본문

값이 이미 상수라면 final보다 const를 쓰는 게 좋아요. 왜냐하면 const 선언은 hot reload에 더 친화적이고, 그 값을 다른 상수 표현식에서도 그대로 쓸 수 있기 때문이에요.

BAD — 값이 상수인데 final로 선언했어요.

final o = const <int>[];

class A {
  static final o = const <int>[];
}

GOODconst로 선언했어요.

const o = <int>[];

class A {
  static const o = <int>[];
}

final은 한 번 정해지면 바뀌지 않는다는 뜻이고, const는 컴파일 타임에 값이 정해진다는 뜻이에요. 값이 미리 상수로 정해져 있다면 const로 선언하면 이 상수를 다른 상수 표현식에서도 참조할 수 있게 돼요.

규칙 켜기

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

linter:
  rules:
    - prefer_const_declarations

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

linter:
  rules:
    prefer_const_declarations: true

더 알아보기

  • 상수 생성자를 호출할 때도 const를 쓰라는 prefer_const_constructors 규칙과 자주 함께 써요.