跳到主要內容

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;
}

啟用

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - unnecessary_getters_setters

如果你使用 YAML 對映語法配置 linter 規則,請在 linter > rules 下新增 unnecessary_getters_setters: true

analysis_options.yaml
yaml
linter:
  rules:
    unnecessary_getters_setters: true