prefer_final_fields
プライベートフィールドはfinalにできます。
詳細
#From 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
yaml
linter:
rules:
- prefer_final_fields代わりにYAMLマップ構文を使用してリンタールールを設定している場合は、linter > rules の下に prefer_final_fields: true を追加してください。
analysis_options.yaml
yaml
linter:
rules:
prefer_final_fields: true