avoid_redundant_argument_values 진단: 기본값과 같은 인자 값을 줄 필요가 없을 때

avoid_redundant_argument_values 진단: 기본값과 같은 인자 값을 줄 필요가 없을 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. avoid_redundant_argument_values선택 매개변수(optional parameter)에 전달한 인자의 값이 그 매개변수의 기본값(default value)과 같을 때 Dart 분석기가 알려주는 린트(lint) 진단이에요. 중복되는 인자는 대개 제거해도 코드 동작이 바뀌지 않아요.

출처: avoid_redundant_argument_values

본문

설명

분석기는 함수의 선택 매개변수에 인자를 전달했는데 그 인자의 값이 매개변수의 기본값과 같을 때 이 진단을 만들어요. 중복되는 인자는 코드의 동작을 바꾸지 않고 제거할 수 있는 경우가 많아요.

메서드를 호출할 때는 중복 검사가 호출 대상의 정적 타입(static type)을 기준으로 하기 때문에, 메서드 오버라이드(override)가 매개변수의 기본값을 바꾸는 경우에는 오탐(false positive)이 있을 수 있어요. 정적 타입에는 어떤 기본값이 지정돼 있고 실제 런타임 타입에는 다른 기본값이 있다면, 이 진단이 정확하지 않을 수 있어요.

예시

다음 코드는 이름 있는 인자 b가 기본값인 true와 같은 값을 갖기 때문에 이 진단을 만들어요.

void g({bool b = true}) {}

void f() {
  g(b: true);
}

다음 코드는 위치 기반 인자 1g의 두 번째 매개변수의 기본값과 같은 값을 갖기 때문에 이 진단을 만들어요.

void g([int? a, int? b = 1]) {}

void f() {
  g(0, 1);
}

흔한 해결 방법

호출에서 중복되는 인자를 제거해요.

void g({bool b = true}) {}

void f() {
  g();
}
void g([int? a, int? b = 1]) {}

void f() {
  g(0);
}

더 알아보기