メインコンテンツにスキップ

unnecessary_getters_setters

安定版
推奨
修正が利用可能です

「念のため」という理由だけでフィールドをゲッターとセッターでラップすることは避けてください。

詳細

#

Effective Dart」より

避けるべきこと:フィールドを「念のため」という理由だけでゲッターとセッターでラップすること。

JavaやC#では、実装が単にフィールドにフォワードするだけの場合でも、すべてのフィールドをゲッターとセッター(C#ではプロパティ)の後ろに隠すことが一般的です。これにより、後でこれらのメンバーで追加の作業が必要になった場合でも、コールサイトを変更することなく対応できます。これは、Javaではゲッターメソッドの呼び出しとフィールドへのアクセスが異なるため、またC#ではプロパティへのアクセスと生のフィールドへのアクセスがバイナリ互換性がないためです。

Dartにはこの制限がありません。フィールドとゲッター/セッターは完全に区別がつきません。クラスでフィールドを公開した後、そのフィールドを使用しているコードを変更することなく、後からゲッターとセッターでラップすることができます。

悪い例

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マップ構文を使用してリンタールールを設定している場合は、linter > rules の下に unnecessary_getters_setters: true を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    unnecessary_getters_setters: true