本ドキュメントでは,SmTIAS-Capture プロジェクトの Dart / Flutter コーディング規約(命名・フォーマット・import・型・コメント)を定義する. 基本方針として Effective Dart に準拠し,プロジェクト固有のルールのみ本書で定める.
※ ディレクトリ構成・ファイル配置は project-structure ルール,エラー処理・ログは error-handling ルール を参照する.
dart format のデフォルト設定に従う(行幅 80 文字).vscode/settings.json で設定済み)Effective Dart の命名規則に従う.プロジェクト固有の補足は以下の通り.
| 対象 | 規則 | 例 |
|---|---|---|
| ファイル名 | snake_case | camera_provider.dart |
| クラス名 | UpperCamelCase | CameraProvider |
| 変数・関数 | lowerCamelCase | takePhoto() |
| 定数 | lowerCamelCase | defaultImageQuality |
| プライベート | 先頭に _ | _controller |
| Provider | 〇〇Provider | CameraProvider |
| Service | 〇〇Service | FileService |
| Screen(画面) | 〇〇Screen | CaptureScreen |
| Widget(部品) | 機能を表す名前 | ShutterButton |
以下の順序で記述し,各グループ間は空行で区切る.
// 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 で自動整列されるため,手動調整は不要.
var / final)を活用するdynamic は避け,Object? を使用するfinal をデフォルトとし,再代入が必要な場合のみ var を使用する///): 公開 API(public なクラス・メソッド)に記述する//): ロジックが自明でない箇所にのみ記述する/// 撮影画像を PNG 形式で共有ストレージに保存する.
///
/// [imageBytes] は JPEG エンコード済みの画像データ.
/// 保存先は `Pictures/MiniTIAS/` ディレクトリ.
/// 同秒の重複ファイルが存在する場合は連番サフィックスを付与する.
Future<String> saveImage(Uint8List imageBytes) async {
// ...
}
[paramName] 記法を使用する