avoid_shadowing_type_parameters 린트 규칙: 타입 매개변수를 가리지 맙시다

avoid_shadowing_type_parameters 린트 규칙: 타입 매개변수를 가리지 맙시다

avoid_shadowing_type_parameters타입 매개변수(type parameter)를 가리는(shadowing) 것을 피해 달라고 알려주는 Dart 린트(lint) 규칙이에요. Dart 2.1에서 소개된 규칙이랍니다.

출처: avoid_shadowing_type_parameters

본문

설명

클래스나 메서드에서 타입 매개변수의 이름을 다시 사용해 버리면, 바깥쪽 타입 매개변수를 가리게(shadow) 돼요. 이러면 이름이 같아서 어떤 게 진짜인지 헷갈리게 되고, 의도치 않은 오류의 원인이 될 수 있어요. 그래서 타입 매개변수 이름은 서로 겹치지 않게 새로 짓는 게 좋아요.

나쁜 예시

class A<T> {
  void fn<T>() {}
}

클래스 레벨에서 이미 T를 썼는데, 메서드에서 또 T를 선언하고 있어요. 안쪽 T가 바깥쪽 T를 가려버려요.

좋은 예시

class A<T> {
  void fn<U>() {}
}

메서드의 타입 매개변수 이름을 바깥쪽과 다른 U로 바꿔서, 이름이 겹치지 않게 했어요.

규칙 활성화하기

avoid_shadowing_type_parameters 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 추가해요:

linter:
  rules:
    - avoid_shadowing_type_parameters

YAML 맵(map) 문법을 쓴다면 linter > rules 아래에 avoid_shadowing_type_parameters: true를 넣으면 돼요:

linter:
  rules:
    avoid_shadowing_type_parameters: true

더 알아보기