상수 값 선언은 final보다 const로 해요
상수 값 선언은 final보다 const로 해요
prefer_const_declarations 린트 규칙은, 값이 상수로 정해지는 선언은 final 대신 const를 쓰라고 권하는 규칙이에요. Stable 상태이고, 코드 수정도 자동으로 가능해요.
본문
값이 이미 상수라면 final보다 const를 쓰는 게 좋아요. 왜냐하면 const 선언은 hot reload에 더 친화적이고, 그 값을 다른 상수 표현식에서도 그대로 쓸 수 있기 때문이에요.
BAD — 값이 상수인데 final로 선언했어요.
final o = const <int>[];
class A {
static final o = const <int>[];
}
GOOD — const로 선언했어요.
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규칙과 자주 함께 써요.