invariant_booleans
条件不应无条件地计算为true
或false
。
此规则已在最新的 Dart 版本中删除。
详情
#注意:此规则在 Dart 3.0.0 中被移除,不再起作用。
**不要**测试在编译时可以推断出的条件,也不要测试同一个条件两次。
使用无法计算为除false
之外任何值的条件的条件语句会导致代码块无法正常工作。如果条件无法计算为除true
之外的任何值,则条件语句完全是多余的,并且会使代码可读性降低。很有可能代码不符合程序员的意图。应该删除条件,或者应该更新它,使其不总是计算为true
或false
,并且不执行重复的测试。此规则将提示测试与已进行 lint 的测试冲突。
错误
dart
// foo can't be both equal and not equal to bar in the same expression
if(foo == bar && something && foo != bar) {...}
错误
dart
void compute(int foo) {
if (foo == 4) {
doSomething();
// we know foo is equal to 4 at this point, so the next condition is always false
if (foo > 4) {...}
...
}
...
}
错误
dart
void compute(bool foo) {
if (foo) {
return;
}
doSomething();
// foo is always false here
if (foo){...}
...
}
正确
dart
void nestedOK() {
if (foo == bar) {
foo = baz;
if (foo != bar) {...}
}
}
正确
dart
void nestedOk2() {
if (foo == bar) {
return;
}
foo = baz;
if (foo == bar) {...} // OK
}
正确
dart
void nestedOk5() {
if (foo != null) {
if (bar != null) {
return;
}
}
if (bar != null) {...} // OK
}
使用
#要启用invariant_booleans
规则,请在 analysis_options.yaml
文件中将invariant_booleans
添加到linter > rules下。
analysis_options.yaml
yaml
linter:
rules:
- invariant_booleans
除非另有说明,否则本网站上的文档反映了 Dart 3.5.3。页面最后更新时间为 2024-07-03。 查看源代码 或 报告问题.