super 초기화 매개변수를 쓸 수 있다면 써요
super 초기화 매개변수를 쓸 수 있다면 써요
use_super_parameters 규칙에 대해 알아볼게요.
본문
**포워딩 생성자(forwarding constructor)**는 매개변수를 받아서 superclass 생성자로 그대로 넘겨주기만 하는 생성자예요. 이런 생성자는 매개변수 이름을 다시 적으며 넘기기보다 **super 초기화 매개변수(super-initializer parameter)**를 활용하는 게 좋아요. 코드가 더 간결해지고, 읽고 유지하기도 쉬워진답니다.
BAD:
class A {
A({int? x, int? y});
}
class B extends A {
B({int? x, int? y}) : super(x: x, y: y);
}
GOOD:
class A {
A({int? x, int? y});
}
class B extends A {
B({super.x, super.y});
}
super(x: x, y: y)처럼 이름을 반복해서 적을 필요 없이, super.x처럼 매개변수 선언 자리에 바로 super 매개변수를 쓰면 같은 동작을 훨씬 간결하게 표현할 수 있어요.
활성화
use_super_parameters 규칙을 켜려면 analysis_options.yaml 파일의 linter > rules 아래에 추가해요:
linter:
rules:
- use_super_parameters
YAML map 구문으로 lint 규칙을 설정하는 경우엔 linter > rules 아래에 use_super_parameters: true를 넣으면 돼요:
linter:
rules:
use_super_parameters: true
더 알아보기
super매개변수는 Dart 2.17부터 도입된 문법이에요.- 상위 클래스 매개변수 이름을 바꿔야 하는 상황처럼 초기화 목록이 필요할 땐 기존 방식을 써야 해요.