FlutterやDartで開発を行う際の構造体(クラス)やテーブル用のクラスの命名規則には、一般的に以下のようなルールがあります。これらのルールを守ることで、予約語やパッケージ内のクラス名との競合を避けることができます。
1.命名規則の一般的なルール
- パスカルケース(PascalCase):
- クラス名や構造体名はパスカルケースで書きます。各単語の先頭文字を大文字にし、単語をつなげて書きます。
- 例:
User
,TaskItem
,OrderDetails
- キャメルケース(camelCase):
- メソッド名やプロパティ名はキャメルケースで書きます。最初の単語は小文字にし、2つ目以降の単語の先頭文字を大文字にします。
- 例:
getUserName
,orderTotalAmount
- プレフィックスやサフィックスの使用:
- 特定の機能やコンポーネントを示すために、クラス名にプレフィックスやサフィックスを追加することがあります。
- 例:
UserModel
,TaskRepository
,OrderController
- 名前空間の回避:
- クラス名やメソッド名を一意にするために、プロジェクト内で一般的な名前や予約語を避けるようにします。
- 例:
User
という名前が一般的すぎる場合、AppUser
やMyAppUser
などの名前を使います。
- 予約語の回避:
- Dartの予約語やFlutterの既存クラスと競合しないように注意します。
- 例:
String
,int
などの予約語や、Container
,Text
などのFlutterのウィジェット名を避けます。
具体例
// ユーザーデータを表すクラス
class AppUser {
final String id;
final String name;
final String email;
AppUser(this.id, this.name, this.email);
}
// タスクデータを表すクラス
class TaskItem {
final String id;
final String title;
final DateTime dueDate;
final bool isCompleted;
TaskItem(this.id, this.title, this.dueDate, this.isCompleted);
}
// リポジトリクラス
class UserRepository {
// ユーザー情報を取得するメソッド
Future<AppUser> getUserById(String id) async {
// 実装
}
}
// コントローラークラス
class OrderController {
// 注文を処理するメソッド
void processOrder() {
// 実装
}
}
2.その他の注意点
- 意味のある名前を付ける:
- クラス名やメソッド名は、そのクラスやメソッドが何をするのかをわかりやすく示す名前にします。
- 例:
UserProfile
,OrderService
,calculateTotalAmount
- 一貫性のある命名:
- プロジェクト全体で一貫性のある命名規則を適用します。これにより、コードの可読性と保守性が向上します。
- ネストされたクラスやネストされた命名:
- クラスをパッケージに分けたり、ネストしてグループ化することで、命名の衝突を避けることができます。
- 例:
models
パッケージにUser
,Task
クラスを置き、controllers
パッケージにUserController
,TaskController
クラスを置く。
3.予約語と既存クラス名の一覧
Dartの予約語やFlutterの既存クラス名を避けるためには、公式ドキュメントを参照することが有効です。以下に主な予約語と既存クラス名の一部を示します:
- 予約語:
- abstract, else, import, super, as, enum, in, switch, assert, export, interface, sync, async, extends, is, this, await, extension, library, throw, break, external, mixin, true, case, factory, new, try, catch, false, null, typedef, class, final, on, var, const, finally, operator, void, continue, for, part, while, covariant, Function, rethrow, with, default, get, return, yield, deferred, hide, set, do, if, show, dynamic, implements, static
- Flutterの既存クラス名:
- AppBar, Scaffold, Text, Container, Row, Column, Center, Icon, RaisedButton, FlatButton, TextField, ListView, GridView, FutureBuilder, StreamBuilder
これらのルールを守ることで、クラス名の競合や命名の衝突を避けることができます。