mcpField
D
dart-effective-style

dart-effective-style

github.com/dart-lang開発53276 回インストール2 週間前に更新
リポジトリ

dart-effective-style について

Dart 開発者やコーディングエージェント向けのスタイルスキルです。命名、ディレクティブの順序、フォーマット、コミット前のチェック手順を扱います。

主な機能

  1. 01Dart の命名規則の適用
  2. 02インポートとエクスポートの整理
  3. 03dart format による整形
  4. 04制御文での波括弧の使用
  5. 05コミット前のチェック手順

活用シーン

  1. 01Dart コードの命名規則の統一
  2. 02ファイル内のインポートとエクスポートの整理
  3. 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;

ディレクティブの順序

ファイルのプリアンブルは、次の厳格な順序で整理してください。各セクションの間には空行を入れ、各セクション内ではディレクティブをアルファベット順に並べます。

  1. dart: インポートを最初に配置します。
  2. package: インポートを2番目に配置します。
  3. 相対インポートを3番目に配置します。
    • ベストプラクティス: 同じパッケージの lib ディレクトリ内にあるファイルには、相対インポートを使用してください。
  4. すべてのインポートの後に、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 を実行 -> エラーを確認 -> アナライザーが報告した問題を修正します。

コメント