omit_obvious_local_variable_types
ローカル変数の明らかな型注釈を省略します。
詳細
#型が明らかな初期化されたローカル変数には、型注釈を付けないでください。
ローカル変数は、特に最近のコードでは、関数が小さくなる傾向があるため、スコープが非常に小さいです。型を省略すると、読者の注意は、より重要な変数の名前とその初期化された値に集中します。したがって、明らかなローカル変数の型注釈は省略されるべきです。
悪い例
List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
List<List<Ingredient>> desserts = <List<Ingredient>>[];
for (final List<Ingredient> recipe in cookbook) {
if (pantry.containsAll(recipe)) {
desserts.add(recipe);
}
}
return desserts;
}
const cookbook = <List<Ingredient>>[....];良い例
List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
var desserts = <List<Ingredient>>[];
for (final List<Ingredient> recipe in cookbook) {
if (pantry.containsAll(recipe)) {
desserts.add(recipe);
}
}
return desserts;
}
const cookbook = <List<Ingredient>>[....];場合によっては、推論された型が変数の目的の型ではないことがあります。たとえば、後で他の型の値を代入するつもりである場合があります。また、初期化式から推論される型が明白ではなく、コードの将来の読者にとってこの型を文書化することが役立つため、明示的に型注釈を記述したい場合もあります。または、将来の依存関係の更新(近くのコード、インポート、どこであっても)によってその変数の型が静かに変更され、その変数が使用されている場所でコンパイル時エラーまたは実行時バグが発生しないように、特定の型にコミットしたい場合もあります。そのような場合は、変数に目的の型で注釈を付けてください。
良い例
Widget build(BuildContext context) {
Widget result = someGenericFunction(42) ?? Text('You won!');
if (applyPadding) {
result = Padding(padding: EdgeInsets.all(8.0), child: result);
}
return result;
}このルールは実験的です。現在評価中であり、変更または削除される可能性があります。その動作に関するフィードバックを歓迎します!主な問題はここにあります:https://github.com/dart-lang/sdk/issues/58773。
互換性のないルール
#omit_obvious_local_variable_types ルールは、次のルールと互換性がありません。
有効にする
#omit_obvious_local_variable_types ルールを有効にするには、analysis_options.yaml ファイルの linter > rules の下に omit_obvious_local_variable_types を追加してください。
linter:
rules:
- omit_obvious_local_variable_types代わりに linter ルールを構成するために YAML マップ構文を使用している場合は、linter > rules の下に omit_obvious_local_variable_types: true を追加してください。
linter:
rules:
omit_obvious_local_variable_types: true