跳到主內容

no_self_assignments

穩定

不要將變數賦值給自己。

詳情

#

不要將變數賦值給自己。這通常是一個錯誤。

錯誤示例

dart
class C {
  int x;

  C(int x) {
    x = x;
  }
}

正確示例

dart
class C {
  int x;

  C(int x) : x = x;
}

正確示例

dart
class C {
  int x;

  C(int x) {
    this.x = x;
  }
}

錯誤示例

dart
class C {
  int _x = 5;

  int get x => _x;

  set x(int x) {
    _x = x;
    _customUpdateLogic();
  }

  void _customUpdateLogic() {
    print('updated');
  }

  void example() {
    x = x;
  }
}

正確示例

dart
class C {
  int _x = 5;

  int get x => _x;

  set x(int x) {
    _x = x;
    _customUpdateLogic();
  }

  void _customUpdateLogic() {
    print('updated');
  }

  void example() {
    _customUpdateLogic();
  }
}

錯誤示例

dart
class C {
  int x = 5;

  void update(C other) {
    this.x = this.x;
  }
}

正確示例

dart
class C {
  int x = 5;

  void update(C other) {
    this.x = other.x;
  }
}

啟用

#

要啟用 no_self_assignments 規則,請在您的 analysis_options.yaml 檔案中的 linter > rules 下新增 no_self_assignments

analysis_options.yaml
yaml
linter:
  rules:
    - no_self_assignments

如果您使用的是 YAML map 語法來配置 linter 規則,請在 linter > rules 下新增 no_self_assignments: true

analysis_options.yaml
yaml
linter:
  rules:
    no_self_assignments: true