avoid_types_as_parameter_names

avoid_types_as_parameter_names

매개변수 이름이 범위 안에 보이는 어떤 타입의 이름과 같으면, 그 타입을 가리게 되어 버그가 생길 수 있어요. 이런 실수를 막아 주는 린트 규칙을 알아볼게요.

출처: 원문

본문

진단 메시지

The parameter name '{0}' matches a visible type name. The type parameter name '{0}' matches a visible type name.

설명

분석기는 매개변수 목록에 있는 매개변수의 이름이 보이는 타입(범위 안에 이름이 존재하는 타입)과 같을 때 이 진단을 만들어요.

이런 경우 보통 의도했던 실제 매개변수 이름을 빠뜨리고, 타입의 이름을 매개변수의 타입이 아닌 매개변수의 이름으로 사용한 경우가 많아요. 실제로 매개변수 이름을 의도한 경우라 하더라도, 매개변수의 이름이 기존 타입을 가리게 되어 진단하기 어려운 버그로 이어질 수 있어요.

분석기는 타입 매개변수 목록에 있는 타입 매개변수의 이름이 범위 안에 있는 어떤 타입의 이름과 같을 때에도 이 진단을 만들어요. 이 경우에도 실수를 유발하는 섀도잉을 피하기 위해 타입 매개변수의 이름을 바꾸는 걸 권장해요.

예시

다음 코드는 함수 fint라는 이름의 매개변수가 있어 dart:core의 타입 int를 가리기 때문에 이 진단이 발생해요.

void f(int) {}

일반적인 해결 방법

매개변수 이름이 빠져 있는 경우, 매개변수에 이름을 추가해 주세요.

void f(int x) {}

매개변수가 암묵적으로 dynamic 타입이 되도록 의도했다면, 보이는 타입의 이름을 가리지 않도록 매개변수 이름을 다시 지어 주세요.

void f(int_) {}

더 알아보기