avoid_redundant_argument_values 진단: 기본값과 같은 인자 값을 줄 필요가 없을 때
avoid_redundant_argument_values 진단: 기본값과 같은 인자 값을 줄 필요가 없을 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. avoid_redundant_argument_values는 선택 매개변수(optional parameter)에 전달한 인자의 값이 그 매개변수의 기본값(default value)과 같을 때 Dart 분석기가 알려주는 린트(lint) 진단이에요. 중복되는 인자는 대개 제거해도 코드 동작이 바뀌지 않아요.
본문
설명
분석기는 함수의 선택 매개변수에 인자를 전달했는데 그 인자의 값이 매개변수의 기본값과 같을 때 이 진단을 만들어요. 중복되는 인자는 코드의 동작을 바꾸지 않고 제거할 수 있는 경우가 많아요.
메서드를 호출할 때는 중복 검사가 호출 대상의 정적 타입(static type)을 기준으로 하기 때문에, 메서드 오버라이드(override)가 매개변수의 기본값을 바꾸는 경우에는 오탐(false positive)이 있을 수 있어요. 정적 타입에는 어떤 기본값이 지정돼 있고 실제 런타임 타입에는 다른 기본값이 있다면, 이 진단이 정확하지 않을 수 있어요.
예시
다음 코드는 이름 있는 인자 b가 기본값인 true와 같은 값을 갖기 때문에 이 진단을 만들어요.
void g({bool b = true}) {}
void f() {
g(b: true);
}
다음 코드는 위치 기반 인자 1이 g의 두 번째 매개변수의 기본값과 같은 값을 갖기 때문에 이 진단을 만들어요.
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);
}