prefer_const_constructors 진단: const 생성자로 성능을 챙길 때

prefer_const_constructors 진단: const 생성자로 성능을 챙길 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. prefer_const_constructorsconst 생성자를 호출하면서 앞에 const를 붙이지 않았거나 상수 문맥 안에 두지 않았을 때 알려주는 린트(lint) 진단이에요. const로 만들면 컴파일 타임 상수로 정해져서 매번 새 객체를 만들지 않아 성능상 이득이 있어요.

출처: prefer_const_constructors

본문

설명

분석기는 const 생성자의 호출이 const로 시작하지도 않고 상수 문맥(constant context) 안에 있지도 않을 때 이 진단을 만들어요. 상수 문맥은 const 키워드가 암시적으로 적용되는 코드 영역이라, 그 영역 안의 모든 값은 상수여야 해요.

예시

다음 코드는 const 생성자 호출이 const로 시작하지도 않고 상수 문맥 안에 있지도 않아서 이 진단을 만들어요.

class C {
  const C();
}

C c = C();

흔한 해결 방법

문맥을 상수 문맥으로 만들 수 있다면 그렇게 해요.

class C {
  const C();
}

const C c = C();

문맥을 상수 문맥으로 만들 수 없다면, 생성자 호출 앞에 const를 붙이면 돼요.

class C {
  const C();
}

C c = const C();

더 알아보기