目录

invariant_booleans

条件不应无条件地评估为 truefalse

此规则已在最新的 Dart 版本中删除。

详情

#

注意:此规则已在 Dart 3.0.0 中删除;它不再起作用。

不要测试可以在编译时推断的条件或测试相同的条件两次。

使用只能为 false 的条件的条件语句会使代码块失效。如果条件只能评估为 true,则条件语句是完全多余的,并且会降低代码的可读性。代码很可能与程序员的意图不符。应该删除条件,或者应该更新条件,使其不总是评估为 truefalse,并且不执行冗余测试。此规则将提示测试与已进行 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 文件中的 linter > rules 下添加 invariant_booleans

analysis_options.yaml
yaml
linter:
  rules:
    - invariant_booleans