JavaScriptのクラス名の命名規則
パスカルケースを用いる
JavaScriptでは、クラス名には一般的にパスカルケース(PascalCase)を使用します。これは、各単語の先頭を大文字にし、それ以降を小文字にする書き方です。
class UserProfile {
constructor(name) {
this.name = name;
}
}
この命名規則は、JavaScriptの標準的なコーディングスタイルに則っており、関数名(通常はキャメルケース)と区別しやすくなります。
接頭辞や接尾辞の活用
クラス名の意味を明確にするために、接頭辞(Prefix)や接尾辞(Suffix)を利用することがあります。
接頭辞の例
class BaseComponent {} // 基本クラス
class AbstractUser {} // 抽象クラス
class IAuthentication {} // インターフェース的な命名(TypeScriptでよく使われる)
接尾辞の例
class UserManager {} // ユーザー管理をするクラス
class DataService {} // データ関連のサービスクラス
class HttpClient {} // HTTP通信を扱うクラス
抽象クラスの命名
抽象クラスの命名には、一般的に “Abstract” という接頭辞を使います。これにより、直接インスタンス化されるべきでないことを明示できます。
class AbstractShape {
constructor() {
if (new.target === AbstractShape) {
throw new Error("Abstract classes cannot be instantiated.");
}
}
}
インターフェースの命名
TypeScriptでは、インターフェースを定義する際に “I” を接頭辞としてつけることが一般的です。JavaScript単体ではインターフェースがありませんが、命名規則として取り入れることは可能です。
interface IUser {
name: string;
login(): void;
}
シングルトンクラスの命名
シングルトンパターンを採用するクラスでは、”Singleton” という単語をクラス名に含めることがあります。
class DatabaseSingleton {
static instance = null;
static getInstance() {
if (!DatabaseSingleton.instance) {
DatabaseSingleton.instance = new DatabaseSingleton();
}
return DatabaseSingleton.instance;
}
}
ファクトリークラスの命名
ファクトリークラスでは、”Factory” という接尾辞をつけることが一般的です。
class UserFactory {
static createUser(name) {
return new UserProfile(name);
}
}
ドメイン駆動設計(DDD)に基づく命名
ドメイン駆動設計(DDD)を意識したクラス命名では、モデル・エンティティ・リポジトリ・サービスなどの概念を明確にするための命名規則を取り入れます。
class UserEntity {} // データベースのユーザーを表すクラス
class UserRepository {} // ユーザーのデータ取得・保存を行うクラス
class UserService {} // ビジネスロジックを担当するクラス
避けるべきアンチパターン
分かりにくい命名は避けるべきです。以下のようなアンチパターンに注意しましょう。
意味のない略称
class UMgr {} // UserManager のつもりだが、わかりにくい
無意味な一般名
class Data {} // 何を扱うクラスなのか不明
class Processor {} // 何を処理するのか不明
命名のベストプラクティス
- パスカルケース(PascalCase)を使用する
- 接頭辞・接尾辞を適切に活用する
- 役割が明確に伝わる名前をつける
- ドメイン駆動設計(DDD)の概念を取り入れる
- 略語や汎用的すぎる名前は避ける
適切な命名規則を守ることで、コードの可読性と保守性を向上させることができます。