目次

prefer_final_fields

プライベートフィールドを`final`にすることができます。

このルールはDart 2.0から利用可能です。

ルールセット:推奨Flutter

このルールにはクイックフィックスがあります。

詳細

#

Effective Dartより

DO ライブラリ内で後で再代入されない場合は、プライベートフィールドを`final`として宣言することを推奨します。

可能な限りフィールドを`final`として宣言することは、偶発的な再代入を回避し、コンパイラによる最適化を可能にするため、良い習慣です。

悪い例

dart
class BadImmutable {
  var _label = 'hola mundo! BadImmutable'; // LINT
  var label = 'hola mundo! BadImmutable'; // OK
}

悪い例

dart
class MultipleMutable {
  var _label = 'hola mundo! GoodMutable', _offender = 'mumble mumble!'; // LINT
  var _someOther; // LINT

  MultipleMutable() : _someOther = 5;

  MultipleMutable(this._someOther);

  void changeLabel() {
    _label= 'hello world! GoodMutable';
  }
}

良い例

dart
class GoodImmutable {
  final label = 'hola mundo! BadImmutable', bla = 5; // OK
  final _label = 'hola mundo! BadImmutable', _bla = 5; // OK
}

良い例

dart
class GoodMutable {
  var _label = 'hola mundo! GoodMutable';

  void changeLabel() {
    _label = 'hello world! GoodMutable';
  }
}

悪い例

dart
class AssignedInAllConstructors {
  var _label; // LINT
  AssignedInAllConstructors(this._label);
  AssignedInAllConstructors.withDefault() : _label = 'Hello';
}

良い例

dart
class NotAssignedInAllConstructors {
  var _label; // OK
  NotAssignedInAllConstructors();
  NotAssignedInAllConstructors.withDefault() : _label = 'Hello';
}

使用方法

#

`prefer_final_fields`ルールを有効にするには、`analysis_options.yaml`ファイルのlinter > rulesに`prefer_final_fields`を追加します。`analysis_options.yaml`

analysis_options.yaml
YAML
linter:
  rules:
    - prefer_final_fields