prefer_final_fields
私有欄位可以宣告為 final
。
詳細資訊
#建議 將未在函式庫中重新賦值的私有欄位宣告為 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 map 語法來設定 linter 規則,請在 linter > rules 下新增 prefer_final_fields: true
analysis_options.yaml
yaml
linter:
rules:
prefer_final_fields: true
除非另有說明,否則本網站的文件內容反映 Dart 3.7.1 版本。頁面最後更新於 2025-03-07。 檢視原始碼 或回報問題。