Newer
Older
SmTIAS-Capture / .claude / rules / coding-style.md

paths: ["lib/", "test/"]

コーディング規約 (Coding Standards)

本ドキュメントでは,SmTIAS-Capture プロジェクトの Dart / Flutter コーディング規約(命名・フォーマット・import・型・コメント)を定義する. 基本方針として Effective Dart に準拠し,プロジェクト固有のルールのみ本書で定める.

※ ディレクトリ構成・ファイル配置は project-structure ルール,エラー処理・ログは error-handling ルール を参照する.

フォーマット (Formatting)

  • dart format のデフォルト設定に従う(行幅 80 文字)
  • VS Code の「保存時フォーマット」を有効にする(.vscode/settings.json で設定済み)
  • 手動でのフォーマット調整は行わない

命名規則 (Naming Conventions)

Effective Dart の命名規則に従う.プロジェクト固有の補足は以下の通り.

対象規則例
ファイル名snake_casecamera_provider.dart
クラス名UpperCamelCaseCameraProvider
変数・関数lowerCamelCasetakePhoto()
定数lowerCamelCasedefaultImageQuality
プライベート先頭に __controller
Provider〇〇ProviderCameraProvider
Service〇〇ServiceFileService
Screen(画面)〇〇ScreenCaptureScreen
Widget(部品)機能を表す名前ShutterButton

import 順序 (Import Order)

以下の順序で記述し,各グループ間は空行で区切る.

// 1. Dart SDK
import 'dart:async';
import 'dart:io';

// 2. Flutter SDK
import 'package:flutter/material.dart';

// 3. 外部パッケージ(pub.dev)
import 'package:camera/camera.dart';
import 'package:provider/provider.dart';

// 4. プロジェクト内
import 'package:smtias_capture/providers/camera_provider.dart';
import 'package:smtias_capture/services/file_service.dart';

※ dart fix --apply および dart format で自動整列されるため,手動調整は不要.

型の使い方 (Type Usage)

  • ローカル変数は型推論(var / final)を活用する
  • 関数の引数・戻り値には明示的に型を記述する
  • dynamic は避け,Object? を使用する
  • final をデフォルトとし,再代入が必要な場合のみ var を使用する

ドキュメント (Documentation)

コード内コメント

  • DartDoc コメント(///): 公開 API(public なクラス・メソッド)に記述する
  • 実装コメント(//): ロジックが自明でない箇所にのみ記述する
  • 「何をしているか」ではなく「なぜそうしているか」を書く

DartDoc の書き方

/// 撮影画像を PNG 形式で共有ストレージに保存する.
///
/// [imageBytes] は JPEG エンコード済みの画像データ.
/// 保存先は `Pictures/MiniTIAS/` ディレクトリ.
/// 同秒の重複ファイルが存在する場合は連番サフィックスを付与する.
Future<String> saveImage(Uint8List imageBytes) async {
  // ...
}
  • 1 行目は動詞で始める簡潔な要約(句点で終わる)
  • 詳細が必要な場合は空行を挟んで続ける
  • パラメータの説明は [paramName] 記法を使用する