super 초기화 매개변수를 쓸 수 있다면 써요

super 초기화 매개변수를 쓸 수 있다면 써요

use_super_parameters 규칙에 대해 알아볼게요.

출처: Use super-initializer parameters where possible.

본문

**포워딩 생성자(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부터 도입된 문법이에요.
  • 상위 클래스 매개변수 이름을 바꿔야 하는 상황처럼 초기화 목록이 필요할 땐 기존 방식을 써야 해요.