跳到主要內容

unnecessary_getters_setters

穩定
推薦
提供修復

避免為了「安全」而將欄位包裝在 getter 和 setter 中。

詳細資訊

#

出自Effective Dart

避免為了「安全」而將欄位包裝在 getter 和 setter 中。

在 Java 和 C# 中,常見的做法是將所有欄位隱藏在 getter 和 setter(或 C# 中的屬性)之後,即使實作只是轉發到欄位也是如此。這樣一來,如果您需要在這些成員中執行更多工作,您可以做到這一點,而無需修改呼叫點。這是因為在 Java 中呼叫 getter 方法與存取欄位不同,而且在 C# 中存取屬性與存取原始欄位不具二進位相容性。

Dart 沒有這種限制。欄位和 getter/setter 完全無法區分。您可以公開類別中的欄位,然後將其包裝在 getter 和 setter 中,而無需修改任何使用該欄位的程式碼。

錯誤範例

dart
class Box {
  var _contents;
  get contents => _contents;
  set contents(value) {
    _contents = value;
  }
}

正確範例

dart
class Box {
  var contents;
}

啟用

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - unnecessary_getters_setters

如果您改用 YAML map 語法來設定 linter 規則,請在 linter > rules 下方新增 unnecessary_getters_setters: true

analysis_options.yaml
yaml
linter:
  rules:
    unnecessary_getters_setters: true