no_wildcard_variable_uses 린트: 와일드카드 매개변수·변수 사용 피하기

no_wildcard_variable_uses 린트: 와일드카드 매개변수·변수 사용 피하기

와일드카드(wildcard)로 쓰이는 언더스코어 이름(_, __, ___ 등)을 실제 변수처럼 사용하는 코드를 잡아주는 린트(lint) 규칙이에요. 앞으로 Dart 언어에서 이런 이름들이 값에 바인딩되지 않는 방식으로 바뀔 예정이라, 미리 대비하라는 규칙이랍니다.

출처: no_wildcard_variable_uses

본문

설명

와일드카드 매개변수나 변수를 사용하지 마세요(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

더 알아보기