跳到主要内容

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