dart-effective-style について
Dart 開発者やコーディングエージェント向けのスタイルスキルです。命名、ディレクティブの順序、フォーマット、コミット前のチェック手順を扱います。
主な機能
- 01Dart の命名規則の適用
- 02インポートとエクスポートの整理
- 03dart format による整形
- 04制御文での波括弧の使用
- 05コミット前のチェック手順
活用シーン
- 01Dart コードの命名規則の統一
- 02ファイル内のインポートとエクスポートの整理
- 03コミット前の変更の整形と解析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dart-lang/ skills --skill dart-effective-styleインストール後、Claude Code で/dart-effective-styleを入力して読み込まれたか確認します。
詳細
Dart コードのスタイル
目次
命名規則
Dart エコシステム全体で一貫性を保つため、次の命名規則を厳守してください。
- 型: クラス、列挙型、typedef、拡張、型パラメーターには
UpperCamelCaseを使用します。 - 変数とメンバー: クラスメンバー、トップレベル定義、変数、パラメーター、名前付きパラメーターには
lowerCamelCaseを使用します。 - 定数: 列挙値を含む定数変数には
lowerCamelCaseを使用してください。- 条件付き:
SCREAMING_CAPSを使用している既存コードを編集する場合や、生成コード(例:protobufs)を扱う場合は、既存のスタイルに合わせてください。
- 条件付き:
- ファイルとディレクトリ: パッケージ、ディレクトリ、ソースファイルには
lowercase_with_underscoresを使用します。 - インポートプレフィックス: インポートプレフィックスには
lowercase_with_underscoresを使用します。 - 頭字語: 3 文字以上の頭字語や略語は、通常の単語と同様に先頭を大文字にします(例:
Http、Uri)。2 文字の頭字語はすべて大文字にします(例:ID、UI)。略語がlowerCamelCase識別子の先頭に来る場合は、すべて小文字にします(例:httpConnection)。 - プライバシー: ライブラリ内で非公開にするメンバーやトップレベル宣言には、先頭にアンダースコア
_を付けます。ローカル変数、パラメーター、ローカル関数、ライブラリプレフィックスには、先頭のアンダースコアを使用しないでください。 - 未使用のパラメーター: 意図を明示するため、未使用のコールバックパラメーターにはワイルドカード(
_、__など)を使用してください。 - プレフィックス: 接頭辞文字(
kDefaultTimeoutのようなハンガリアン記法など)は使用しないでください。 - ライブラリ: ライブラリ名を明示的に指定しないでください(例:
library my_library;は避けてください)。
例
// GOOD
class SliderMenu {}
typedef Predicate<T> = bool Function(T value);
const defaultTimeout = 1000;
var httpConnection = connect();
futureOfVoid.then((_) {
print('Operation complete.');
});
// BAD
class slider_menu {}
const DEFAULT_TIMEOUT = 1000;
var HTTPConnection = connect();
const kDefaultTimeout = 1000;
ディレクティブの順序
ファイルのプリアンブルは、次の厳格な順序で整理してください。各セクションの間には空行を入れ、各セクション内ではディレクティブをアルファベット順に並べます。
dart:インポートを最初に配置します。package:インポートを2番目に配置します。- 相対インポートを3番目に配置します。
- ベストプラクティス: 同じパッケージの
libディレクトリ内にあるファイルには、相対インポートを使用してください。
- ベストプラクティス: 同じパッケージの
- すべてのインポートの後に、
exportディレクティブを別のセクションに記述します。
例
// GOOD
import 'dart:async';
import 'dart:collection';
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
import 'src/util.dart';
export 'src/error.dart';
書式設定ルール
- 必須の書式設定: コードをコミットする前に、必ず
dart formatを実行してください。Dart の公式な空白処理ルールは、dart formatの出力によって完全に定義されます。 - 行の長さ: 1 行は80文字以内を目安にしてください。行の長さの制約により
dart formatの出力が読みづらくなる場合は、深くネストされた式を整理するか、変数を抽出してください。 - フロー制御: dangling else 問題を避けるため、すべてのフロー制御文で波括弧を使用してください。
- 例外:
else節のないif文は、文全体が1行に収まる場合に限り、波括弧を省略できます。
- 例外:
例
// GOOD
if (isWeekDay) {
print('Bike to work!');
} else {
print('Go dancing or read a book!');
}
if (arg == null) return defaultValue;
// BAD
if (overflowChars != other.overflowChars)
return overflowChars < other.overflowChars;
ワークフロー
コミット前のフォーマットとリントのワークフロー
スタイルへの準拠を確認するため、Dart コードの変更を確定する前にこのワークフローを実行してください。
- タスクの進捗
- 1. 命名規則(例:型には
UpperCamelCase、変数にはlowerCamelCase)に照らしてコードを確認します。 - 2. インポートの順序(
dart:->package:-> 相対インポート -> エクスポート)を確認します。 - 3. 変更したファイルに対して
dart format .を実行します。 - 4.
dart analyzeを実行し、静的解析とリントのエラーを検出します。 - 5. validator を実行 -> エラーを確認 -> アナライザーが報告した問題を修正します。
- 1. 命名規則(例:型には
コメント
Markdown 対応