Javaのクラス名の命名には、コードの可読性や保守性を向上させるための重要なルールがあります。
しかし、初心者の方にとっては「何を守ればいいの?」と感じることも。
本記事では、Javaのクラス名の命名規則を具体例やベストプラクティスやエラー例とともに分かりやすく解説します。
初心者から上級者まで役立つ情報が満載です!
はじめに
Javaのクラス名を命名する際には、特定の命名規則に従う必要があります。
この記事では、初心者の方にもわかりやすいように、Javaのクラス名命名規則について基本からベストプラクティスまでを徹底解説します。
また、エラーになりやすいクラス名の例も紹介するので、ぜひ参考にしてください。
- Javaのクラス名の基本的な命名規則
- クラス名 命名時のベストプラクティス
- エラーになるクラス名の例
Java初心者の方にもおすすめの内容となっています。ぜひ最後までご覧ください!
Javaのクラス名命名規則を徹底解説:初心者向けガイド
クラス名の基本的な命名規則
① クラス名は大文字で始める
クラス名の先頭は必ず大文字を使用します(PascalCaseを採用)
// クラス名の先頭は大文字
public class Person { ... }
public class EmployeeDetails { ... }
② キャメルケース(PascalCase)を使用する
クラス名が複数の単語からなる場合は、各単語の先頭を大文字にし、それ以外を小文字にします。
// 各単語の先頭を大文字、それ以外を小文字
public class CustomerAccount { ... }
③ 単語を省略しない
クラス名は明確で、クラスの役割や目的が一目で分かるようにすることが重要です。
悪い例:
// 悪い例:Employeeの略称だが、意味が曖昧
public class Emp { ... }
良い例:
// 良い例:完全な単語を使い、クラスの意味が一目瞭然
public class Employee { ... }
④ 特定の接尾辞や接頭辞を付ける場合は一貫性を保つ
クラスの種類によって接尾辞を付けるのが一般的です。
- データクラス: Dto, Entity
- 例: UserDto, OrderEntity
- 例外クラス: Exception
- 例: InvalidInputException, DatabaseConnectionException
- インターフェースを実装するクラス: 接尾辞にインターフェース名を含む
- 例: Listインターフェースの実装: ArrayList, LinkedList
クラス名 命名時のベストプラクティス
①: 意味のある名前を付ける
クラス名はそのクラスが何を表しているのかを正確に反映するべきです。曖昧な名前や単一文字は避けます。
悪い例:
// 悪い例:クラス名に意味がない
public class A { ... }
良い例:
// 良い例:クラス名に明確な意味がある
public class InvoiceGenerator { ... }
②: 略語や略記の使用を最小限にする
可能な限り完全な単語を使い、略語を避けます。ただし、業界で広く認識されている略語(XML, URL, HTMLなど)は例外です。
※以下は例外
// 業界で広く認識されている略語「Html」などは例外的にクラス名に用いることがある
public class HtmlParser { ... }
③: パッケージとの一貫性を持たせる
クラス名はパッケージ名と合わせて論理的な関係を示すべきです。
サービスロジック用のクラス:
package com.example.services;
// パッケージ名とクラス名の間に「サービスロジック用のクラス」という文脈の論理的関係がある
public class UserService { }
public class ProductService { }
④: 抽象的すぎる名前は避ける
「Data」のみなど、抽象的すぎる名前を避け、より具体的な名前を使用します。
悪い例:
// 悪い例:クラス名が曖昧過ぎる
public class Data { ... }
良い例:
// 良い例:「Data」よりもクラス名が具体的
public class UserData { ... }
よくある質問(FAQ)
Q:Javaのクラス名の命名規則としてエラーになる例を教えてください
①: Javaの予約語やキーワードを使用する
Javaの予約語やキーワードは、クラス名として使用することができません。
エラー例:
// エラー: classはJavaの予約語
public class class { }
// エラー: intはキーワード
public class int { }
予約語やキーワードの例:
class, interface, enum, int, static, public, void, null, true, falseなど。
②: 数字から始まる名前
クラス名は数字で始めることができません。数字が最初に来る場合、構文エラーが発生します。
エラー例:
// エラー: 数字で開始する名前は無効
public class 123User { }
正しい例:
public class User123 { } // OK
③: 特殊文字を含む名前
Javaのクラス名は、英字 (A-Z, a-z)、数字 (0-9)、およびアンダースコア (_) やドル記号 ($) のみを使用できます。
それ以外の特殊文字(例: @, #, !, -)を含む名前は無効です。
エラー例:
// エラー: 特殊文字を含むクラス名
public class User-Info { }
// エラー: 不正な特殊文字
public class User@Info { }
正しい例:
public class User_Info { } // OK
public class UserInfo { } // OK
④: パッケージ名とクラス名が一致する
同じ名前のパッケージとクラスが同じスコープに存在すると、コンパイルエラーになることがあります。
エラー例:
package example;
// エラー: パッケージ名 "example" とクラス名 "example" が一致している
public class example { }
⑤: 大文字と小文字の区別を無視した重複
Javaは大文字と小文字を区別しますが、クラス名の重複に関しては注意が必要です。以下のようなケースでは問題が発生します。
エラー例:
// ファイル: User.java
public class User { }
// ファイル: user.java
public class user { }
この場合、異なるクラスとして定義されていますが、ファイルシステムが大文字小文字を区別しない環境(例: Windows)では、上書きされるためエラーになります。
⑥: クラス名が空白を含む
クラス名に空白を含めることはできません。
エラー例:
// エラー: 空白を含む名前は無効
public class User Info { }
おわりに
- クラス名は大文字で始める
- キャメルケース(PascalCase)を使用する
- 単語を省略しない
- 特定の接尾辞や接頭辞を付ける場合は一貫性を保つ
また、「Javaの予約語やキーワードを使用する」などエラーになる場合もあるので注意!