avoid_redundant_argument_values: 중복된 인자 값 전달을 피하세요
avoid_redundant_argument_values: 중복된 인자 값 전달을 피하세요
avoid_redundant_argument_values는 매개변수의 기본값과 똑같은 값을 전달하는 불필요한 인자를 쓰지 말라고 알려주는 린트(lint) 규칙이에요.
본문
상세 설명
해당 매개변수의 기본값과 일치하는 인자는 전달하지 마세요.
메서드 오버라이드(override)가 매개변수의 기본값을 바꿀 수 있다는 점을 기억하세요. 그래서 어떤 인자는 한쪽 기본값과는 같아도 다른 쪽과는 다를 수 있어요. 클래스 A와, A의 서브클래스인 B가 있다고 해 볼게요. B가 A에 선언된 메서드를 오버라이드하고, 그 메서드의 매개변수가 A의 선언에서는 어떤 기본값을, B의 선언에서는 다른 기본값을 갖는다고 해요. 호출 대상 메서드의 정적 타입이 B이고 B의 기본값이 그 인자와 일치한다면, 그 인자는 생략할 수 있어요(인자 값이 다르다면 린트가 보고되지 않아요). 반면 호출 대상 메서드의 정적 타입이 A라면 린트가 보고될 수 있는데, 어떤 메서드가 실제로 호출되는지 정적으로는 알 수 없으므로 보고된 린트가 오탐(false positive)일 수도 있어요. 그런 경우에는 // ignore: avoid_redundant_argument_values 같은 주석으로 인라인 무시할 수 있어요.
BAD:
void f({bool valWithDefault = true, bool? val}) {
...
}
void main() {
f(valWithDefault: true);
}
GOOD:
void f({bool valWithDefault = true, bool? val}) {
...
}
void main() {
f(valWithDefault: false);
f();
}
활성화하기
avoid_redundant_argument_values 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 avoid_redundant_argument_values를 추가해요.
linter:
rules:
- avoid_redundant_argument_values
대신 YAML map 문법으로 린터 규칙을 설정한다면, linter > rules 아래에 avoid_redundant_argument_values: true를 추가해요.
linter:
rules:
avoid_redundant_argument_values: true
참고로 이 규칙은 Dart 2.8에서 추가됐고, 자동 수정(fix)이 제공돼요.