avoid_field_initializers_in_const_classes 규칙: const 클래스에서 필드 초기화 피하기

avoid_field_initializers_in_const_classes 규칙: const 클래스에서 필드 초기화 피하기

avoid_field_initializers_in_const_classes는 const 생성자를 가진 클래스에서 필드 초기화(field initializer)를 쓰지 말라고 알려주는 린트(lint) 규칙이에요. final x = const expr; 대신 getter로 바꾸면 불필요한 필드 할당을 아낄 수 있어요.

출처: avoid_field_initializers_in_const_classes

본문

설명

const 클래스에서 필드 초기화를 쓰지 마세요.

final x = const expr; 대신 get x => const expr;처럼 쓰는 게 좋아요. 그러면 쓸모없는 필드를 할당하지 않아요. 2018년 4월 기준으로 이 방식은 VM에서는 맞지만, JS로 컴파일되는 코드에는 해당하지 않아요.

BAD:

class A {
  final a = const [];
  const A();
}

GOOD:

class A {
  get a => const [];
  const A();
}

활성화

avoid_field_initializers_in_const_classes 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rulesavoid_field_initializers_in_const_classes를 추가해요.

linter:
  rules:
    - avoid_field_initializers_in_const_classes

YAML map 문법으로 린터 규칙을 설정한다면 linter > rulesavoid_field_initializers_in_const_classes: true를 추가해요.

linter:
  rules:
    avoid_field_initializers_in_const_classes: true

더 알아보기