no_wildcard_variable_uses 린트: 와일드카드 매개변수·변수 사용 피하기
no_wildcard_variable_uses 린트: 와일드카드 매개변수·변수 사용 피하기
와일드카드(wildcard)로 쓰이는 언더스코어 이름(_, __, ___ 등)을 실제 변수처럼 사용하는 코드를 잡아주는 린트(lint) 규칙이에요. 앞으로 Dart 언어에서 이런 이름들이 값에 바인딩되지 않는 방식으로 바뀔 예정이라, 미리 대비하라는 규칙이랍니다.
본문
설명
와일드카드 매개변수나 변수를 사용하지 마세요(Core 라이브러리 관련 규칙이에요).
와일드카드 매개변수와 지역 변수(예: _, __, ___처럼 언더스코어로만 이루어진 이름)는 Dart 언어의 향후 버전에서 값에 바인딩되지 않는(non-binding) 형태로 바뀔 예정이에요. 지금 와일드카드 매개변수나 변수를 사용하는 기존 코드는 앞으로 깨질 거예요. 이런 변화를 대비하고 적용을 쉽게 만들기 위해, 이 린트는 와일드카드와 변수 매개변수의 사용을 금지해요.
BAD:
var _ = 1;
print(_); // LINT
void f(int __) {
print(__); // LINT multiple underscores too
}
GOOD (이런 식으로 값에 접근하지 않고 버리는 용도로만 쓸 때):
for (var _ in [1, 2, 3]) count++;
var [a, _, b, _] = [1, 2, 3, 4];
와일드카드는 나중에 값이 안 바인딩되기 때문에, 그 값을 읽거나 출력하는 데 쓰면 안 돼요. 단순히 버리는 용도(예: 반복문이나 구조 분해에서 무시할 자리)로는 계속 쓸 수 있어요.
활성화 방법
no_wildcard_variable_uses 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 no_wildcard_variable_uses를 추가해요.
analysis_options.yaml:
linter:
rules:
- no_wildcard_variable_uses
대신 YAML 맵 문법으로 린트 규칙을 설정한다면, linter > rules 아래에 no_wildcard_variable_uses: true라고 적어요.
analysis_options.yaml:
linter:
rules:
no_wildcard_variable_uses: true