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

prefer_initializing_formals

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

可能な限り初期化子リストを使用してください。

詳細

#

推奨: 可能な限り初期化子リストを使用してください。

可能な場合に初期化子リストを使用すると、コードがより簡潔になります。

悪い例

dart
class Point {
  num? x, y;
  Point(num x, num y) {
    this.x = x;
    this.y = y;
  }
}

良い例

dart
class Point {
  num? x, y;
  Point(num this.x, num this.y);
}

悪い例

dart
class Point {
  num? x, y;
  Point({num? x, num? y}) {
    this.x = x;
    this.y = y;
  }
}

良い例

dart
class Point {
  num? x, y;
  Point({required num this.x, required num this.y});
}

注意: このルールは、パラメータ名とフィールド名が同じである場合を除き、名前付きパラメータに対しては警告を生成しません。その理由は、そのような警告を解決するには、フィールド名を変更するか、パラメータ名を変更する必要があり、どちらのアクションも破壊的な変更になる可能性があるためです。たとえば、以下は警告を生成しません。

dart
class Point {
  bool? isEnabled;
  Point({bool? enabled}) {
    this.isEnabled = enabled; // OK
  }
}

注意: 初期化子リストパラメータを使用すると、初期化されたフィールドよりも厳密な型を強制できることにも注意してください。次の例では、名前のない Bid コンストラクタは、amount が nullable (int?) として宣言されているにもかかわらず、非 null な int を要求します。

dart
class Bid {
  final int? amount;
  Bid(int this.amount);
  Bid.pass() : amount = null;
}

有効にする

#

prefer_initializing_formals ルールを有効にするには、analysis_options.yaml ファイルの linter > rules の下に prefer_initializing_formals を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    - prefer_initializing_formals

代わりに YAML マップ構文を使用してリンター ルールを構成している場合は、linter > rules の下に prefer_initializing_formals: true を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    prefer_initializing_formals: true