@immutable 클래스에는 const 생성자를 선언해요

@immutable 클래스에는 const 생성자를 선언해요

prefer_const_constructors_in_immutables 린트 규칙은, @immutable 클래스에는 const 생성자를 선언하라고 권하는 규칙이에요. Stable 상태이고, 코드 수정도 자동으로 가능해요.

출처: Prefer declaring const constructors on @immutable classes.

본문

@immutable 어노테이션이 붙은 클래스는 값이 바뀌지 않아요. 그런데 값이 안 바뀌는 건데 매번 새 인스턴스를 만들 필요는 없겠죠. 그래서 불변 클래스라면 생성자를 const 생성자로 만들어 주는 게 일반적으로 좋은 습관이에요.

BAD@immutable인데 생성자가 const가 아니에요.

@immutable
class A {
  final a;
  A(this.a);
}

GOOD — 생성자에 const를 붙였어요.

@immutable
class A {
  final a;
  const A(this.a);
}

필드가 전부 final이라 값이 안 바뀌니까, 생성자만 const로 만들어 주면 이 클래스는 어디서든 상수처럼 다룰 수 있게 돼요.

규칙 켜기

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

linter:
  rules:
    - prefer_const_constructors_in_immutables

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

linter:
  rules:
    prefer_const_constructors_in_immutables: true

더 알아보기

  • @immutable 클래스를 만들었다면, 만들어진 인스턴스를 const로 쓰려는 prefer_const_constructors 규칙도 함께 보면 좋아요.