Rules / Style / no-leading-underscores-for-local-identifiers
no-leading-underscores-for-local-identifiers
Flags local variables and parameters whose names begin with an underscore.
A leading underscore marks a declaration as library-private, but that
privacy only applies to top-level and class members — locals, parameters,
closure parameters, for-in variables, and catch clause bindings are already
confined to their scope. Prefixing them with an underscore implies a privacy
that does not exist and misleads the reader, so drop it. Wildcard names made
solely of underscores (e.g. _, __) are exempt, being the idiomatic way
to name a deliberately unused binding.
Invalid
example.dartdart
// Local variables and parameters must not start with an underscore.
void f(int _param) {}
void g() {
var _local = 1;
print(_local);
}
void h() {
final _temp = 2;
print(_temp);
}
void i() {
for (var _x in <int>[]) {
print(_x);
}
}
void j() {
try {
} catch (_e) {
print(_e);
}
}
void k() {
final fn = (int _p) => 0;
print(fn(1));
}
Avoid leading underscores for local identifiers.
2
3void f(int _param) {}
∙
Avoid leading underscores for local identifiers.
5void g() {
6 var _local = 1;
∙
Avoid leading underscores for local identifiers.
10void h() {
11 final _temp = 2;
∙
Avoid leading underscores for local identifiers.
15void i() {
16 for (var _x in <int>[]) {
∙
Avoid leading underscores for local identifiers.
22 try {
23 } catch (_e) {
∙
Avoid leading underscores for local identifiers.
28void k() {
29 final fn = (int _p) => 0;
∙
Valid
example.dartdart
// Locals without leading underscores; wildcards and members are exempt.
int _private = 0;
class C {
int _field = 0;
}
void f(int param) {
print(param);
}
void g() {
var local = 1;
print(local);
}
void h(int _) {}
void i() {
var __ = 1;
print(__);
}
How to configure
Set the severity of no-leading-underscores-for-local-identifiers in your falcon.json:
falcon.jsonjson
{
"linter": {
"rules": {
"style": {
"no-leading-underscores-for-local-identifiers": "error"
}
}
}
}