no_leading_underscores_for_local_identifiers

Group: style

Maturity: stable

Dart SDK: >= 2.16.0 • (Linter v1.15.0)

Since info is static, may be stale
recommendedflutterhas-fix

View all Lint Rules

Using the Linter

DON'T use a leading underscore for identifiers that aren't private. Dart uses a leading underscore in an identifier to mark members and top-level declarations as private. This trains users to associate a leading underscore with one of those kinds of declarations. They see _ and think "private". There is no concept of "private" for local variables or parameters. When one of those has a name that starts with an underscore, it sends a confusing signal to the reader. To avoid that, don't use leading underscores in those names.

EXCEPTION:: An unused parameter can be named _, __, ___, etc. This is common practice in callbacks where you are passed a value but you don't need to use it. Giving it a name that consists solely of underscores is the idiomatic way to indicate that the value isn't used.

BAD:

void print(String _name) {
  var _size = _name.length;
  ...
}

GOOD:

void print(String name) {
  var size = name.length;
  ...
}

OK:

[1,2,3].map((_) => print('Hello'));

Usage

To enable the no_leading_underscores_for_local_identifiers lint, add no_leading_underscores_for_local_identifiers under linter > rules in your analysis_options.yaml file:

linter:
  rules:
    - no_leading_underscores_for_local_identifiers