クラス名を名詞にする、Javaプログラミングで、わかりやすいクラス名の付け方
Javaプログラミングで、わかりやすいクラス名を付ける方法が、よくわかりません…。
Javaプログラミングのクラス名は、名詞にします。
クラス名を名詞にすると、クラスの役割を「分類している感じ」がして、わかりやすいです。
クラス名を名詞にする、Javaプログラミングで、わかりやすいクラス名の付け方
Javaプログラミングでクラス名を名詞にすると、クラスの役割を「分類している感じ」がします。
よって、わかりやすいと思います。
例えばMIDIシーケンスを作成する、というクラス名について、
「作成する・Make」を、「作る人・Maker」という名詞(役割名)にして、クラス名を付けます。
名詞にしたクラス名の例。
MidiSequenceMakerクラス。
「MIDIシーケンスを作る人」を表すクラス名です。
英語の一文になる、クラスのメソッド名を動詞にすること
クラス名を名詞にした場合、クラスのメソッド名を動詞にすると、クラス名とメソッド名が一つの文のように「まとまった感じ」になります。
次のようなメソッド名の場合、
saveMidiFile( … )メソッド。
「MIDIファイルを保存する」メソッド。
「クラス名とメソッド名の繋がり」は、次のようになります。
MidiSequenceMaker . saveMidiFile( … )
「MIDIシーケンスを作る人」が、「MIDIファイルを保存する」。
名詞(主語)+ 動詞(述語)となり、一つの「文のような感じ」がします。
少し強引な意見かもしれませんが、「英語の一文のような感じ」となります。
※この見出しの記事は、2003年6月当時の記事になります。
クラス名がわかりやすい場合、クラス名にパッケージ名を含める必要なし
もしも、クラス名にパッケージ名を含めなくても、クラス名が表す意味がわかりやすい場合は、クラス名にパッケージ名を含めない方が良い、と思います。
クラス名にパッケージ名を含めると、クラス名自身がパッケージ名の情報を持つことになります。
ですがそのように、クラス名自身がパッケージ名の情報を持つことについて、利点がある場合はそれほど多くない、と思います。
それほど意味はなく、単にクラス名が長くなっただけという場合が多い、と思います。
掲示板プログラムのログイン処理をするクラス名の付け方
例として、
掲示板プログラムのログイン処理をするクラス名について、クラス名の付け方を考えます。
- 「パッケージ名」で、「掲示板という情報」を示します。
- 「クラス名」で、「ログイン処理という情報」を示します。
次の2通りのクラス名を考えます。
クラス名の付け方の種類 | ログイン処理をするクラス名(パッケージ名付き) | ログイン処理をするクラス名の説明 |
---|---|---|
クラス名その1 | board . LoginAction | 「掲示板」の「ログイン処理」 |
クラス名その2 | board . BoardLoginAction | 「掲示板」の「掲示板ログイン処理」 |
通常は(クラス名その1)の「掲示板」の「ログイン処理」で、わかりやすいと思います。
(クラス名その2)のように、「掲示板」の「掲示板 … 」という風に、繰り返す必要は少ない、と思います。
よってログイン処理のクラス名に、掲示板というパッケージ名を示す単語Boardを含めず、LoginActionだけで良いと思います。
もしもソースコードにおいて、ログイン処理だけでなくて、
「掲示板のログイン処理」という風に、掲示板を強調した書き方をしたい場合は、
パッケージ名とクラス名の両方を書けば良いです。
パッケージ名とクラス名を書く例。
board.LoginAction action = new board.LoginAction();
クラス名にパッケージ名を含めている例
もちろんプログラマーの方が、クラス名にパッケージ名を含めた方が「わかりやすい」と判断した場合は、
クラス名にパッケージ名を含めても良い、と思います。
以下、クラス名(HttpServletRequest)に、パッケージ名(servletとhttp)を含めている例です。
クラス名(パッケージ名付き) | クラス名の説明 |
---|---|
javax . servlet . http . HttpServletRequest | 「サーブレット」の「http」の「Httpサーブレットリクエスト」 |
※この見出しの記事は、2004年7月当時の記事になります。
役割名とスーパークラス名、Javaプログラミングで、わかりやすいサブクラス名の付け方
Javaプログラミングにおける、わかりやすいサブクラス名の付け方についてです。
サブクラス名の付け方として、
サブクラスの役割名 + スーパークラス名にすると、わかりやすいと思います。
サブクラス名の付け方の例
例として、サブクラス名PostActionの名付け方について、お話したいと思います。
public class PostAction extends Action {
....
}
この場合、スーパークラス名はActionです。
このActionという名称は、ユーザのマウス操作などに対する処理を行う、ということを示します。
例えば、java.awt.event.ActionListenerのActionと似ている、と思います。
サブクラスの役割名は、Postです。
Postは、投稿(メッセージ投稿)という役割を示します。
以上から、
サブクラス名を、サブクラスの役割名(Post) + スーパークラス名(Action)とします。
このように名付けることで、
PostActionサブクラスは、投稿に関係するマウス操作の処理を行う、ということを示します。
参考:ここではPostという単語が、掲示板に「メッセージを投稿する事」を示す、と考えました。
※この見出しの記事は、2003年6月当時の記事になります。
ソースコードの品質や効率性を向上させる、わかりやすいクラス名
Javaプログラミングにおいて、わかりやすいクラス名を付ける際、以下の点が重要です。
- クラス名は、簡潔かつ具体的な名詞であること。
- クラス名では、キャメルケースを使うこと。
- クラス名が長すぎないこと。
これらの点を意識してクラス名を付けることで、ソースコードの品質や効率性を向上させることができます。
簡潔で具体的な名詞のクラス名
クラス名は、そのクラスが表すものや処理することを、簡潔かつ具体的に表すと良いです。
例えば以下のように、名詞でクラス名を付けると良いです。
- 銀行口座を表すクラスなら、BankAccountと名付ける。
- 動物を表すクラスなら、Animalと名付ける。
キャメルケースで名付けたクラス名
複数の単語を組み合わせてクラス名を付ける場合は、
キャメルケース(※)を使うと、読みやすくなります。
※各単語の先頭を大文字で始めること。
例えば、以下のように名付けます。
- 学生を表すクラスなら、Studentと名付ける。
- 学生管理システムを表すクラスなら、StudentManagementSystemと名付ける。
Java言語で用いられる、キャメルケースとローワーキャメルケース
Java言語では、一般的に以下のように命名します。
- 変数やメソッドについては、ローワーキャメルケースで命名する。
- クラスやインターフェースについては、キャメルケースで命名する。
ローワーキャメルケースとは、キャメルケースの変形です。
最初の単語だけ小文字で始める方法です。
例えば、「helloWorld」という名前は、
最初の単語が小文字で始まり、次の単語が大文字で始まっています。
キャメルケースとは、単語の区切りを大文字で示す方法です。
例えば、「HelloWorld」という名前は、
HelloとWorldという二つの単語が大文字で始まっています。
Javaプログラミングにおいてキャメルケースで命名することは、コードの可読性や一貫性を高めるための慣習と言えます。
15文字以内のクラス名
クラス名については、あまり長くなりすぎないように注意する必要があります。
長すぎるクラス名は、読みにくいです。
そのため、ソースコードの可読性や保守性を低下させる可能性があります。
一般的には、クラス名は15文字以内に収めると良い、とされています。
なお個人的には、クラス名を15文字以内で名付けられるかと言われたら、できない場合もありそうです。
日本語でクラス名を考えて、それを英語に自動翻訳したら、長い英文になったりします。
文字数のある長い英文を15文字以内にまとめるのは、なかなか難しいです。
もしもクラス名が長くなりそうな場合は、そのクラスが担う役割が多すぎないかどうかを、見直してみましょう。
実際に役割が多すぎる場合は、そのクラスを分割することで、よりわかりやすく簡潔なクラス名を付けることができます。