unnecessary_overrides 진단: 불필요한 재정의(override)
unnecessary_overrides 진단: 불필요한 재정의(override)
Dart 분석기가 내보내는 진단에는 이름이 있어요. unnecessary_overrides는 인스턴스 멤버(member)가 상속받은 멤버를 재정의했는데, 정확히 같은 인자로 재정의된 멤버만 다시 호출할 뿐일 때 알려주는 린트(lint) 진단이에요.
본문
설명
분석기는 인스턴스 멤버가 상속받은 멤버를 재정의하면서, 딱 그 재정의된 멤버를 같은 인자로 호출하는 것밖에 하지 않을 때 이 진단을 만들어요.
예시
다음 코드는 메서드 D.m이 재정의된 메서드를 호출하는 것 외에는 아무것도 하지 않기 때문에 이 진단을 만들어요.
class C {
int m(int x) => x;
}
class D extends C {
@override
int m(int x) => super.m(x);
}
흔한 해결 방법
메서드가 재정의된 메서드가 하는 일보다 더 많은 일을 해야 한다면, 빠져 있는 기능을 구현해요.
class C {
int m(int x) => x;
}
class D extends C {
@override
int m(int x) => super.m(x) + 1;
}
재정의된 메서드를 수정해야 한다면 — 반환 타입이나 매개변수 타입을 바꾸거나, 매개변수 중 하나를 covariant로 만들거나, 문서 주석을 달거나, 추가적인 애너테이션을 붙이는 식으로 — 코드를 갱신해요.
import 'package:meta/meta.dart';
class C {
int m(int x) => x;
}
class D extends C {
@mustCallSuper
@override
int m(int x) => super.m(x);
}
재정의하는 메서드가 코드의 의미를 바꾸거나 향상시키지 않는다면, 그냥 제거해요.
class C {
int m(int x) => x;
}
class D extends C {}