【本サイトではGoogleアドセンス、または、アフィリエイト広告を利用しています。】
Javaの命名規則とは?
プログラムを書く時に、アルファベットの大文字や小文字を
どのように使い分けているでしょうか?
例えば、ブルートレインという単語を変数として使う時、
アルファベットでどのように定義できるでしょう?
bluetrain
blueTrain
BlueTrain
BLUETRAIN
blue_train
・・・
こんな感じで、人によっていろいろなパターンが出てきそうです。
チームで1つのシステムを作る時に、
好き勝手に名前をつけていったとしたらどうでしょう?
後からチームに加わった人がその統一感のないプログラムを見た時、
とても混乱してしまうのは容易に想像できます。
また、自分の想定している命名ルールと違うプログラムを
触ったり読むのはとても扱い辛いものです。
チーム、いや、Javaを扱う世界中のみんなが同じルールでプログラムを書けば、
そういった問題から一気に解放されます。
ということで、変数やメソッド、クラス名を付ける時はこうしましょうという
ルールを明記したものがJavaの命名規則と呼ばれるものです。
他にも、ネーミング規約、命名規約とか呼ばれたりもします。
いやいや、そこも統一しなさいよ!
と突っ込んでしまうのは粋じゃないんでしょうか。
プログラムの命名仕様
どんな名前でもつけられるのかというとそうではありません。
Javaが定めている以下の仕様に沿わない場合は、プロクラム上で書くとエラーになります。
・先頭に数字は付けられない。
・予約語は使えない。
・Unicode文字を使う。
予約語とは、intやpublic、abstractなど、
Javaのプログラムとして既に定義されているワードのことです。
Unicode文字とは、パソコンで使う文字の世界標準規格です。
難しく考えず、特殊な絵文字や記号でなければ何でも使えると考えてください。
また、文字数の制限もありませんので、プログラム上、
これらのルールに沿っていればどんな名前でもつけられますが、
それだけでは統一感を出すには不十分なので、
さらにこれとは別にプログラムを書く時のお作法が取り決められているのです。
プログラム上の「仕様+お作法」を、まとめて
命名規則(命名規約)として覚えておきましょう!
代表的な命名ケース
命名する方法は先ほどの通り、人が思いつくだけ出てきますが、
名前の付けられている代表的なケースがあります。
Javaの命名規則にも使うのでご紹介します。
・単語の先頭はアルファベット小文字
・単語の区切りに大文字を使う
・記号は使わない
例)blueTrain
・単語の先頭はアルファベット大文字
・単語の区切りに大文字を使う
・記号は使わない
例)BlueTrain
・すべてアルファベット小文字
・単語の区切りにアンダースコア「_」を使う
例)blue_train
・すべてアルファベット小文字
・単語の区切りにハイフン「-」を使う
例)blue-train
クラスや変数を定義する時の命名規則
Javaのクラスや変数にどうやって名前をつけるのか、
一般的なお作法を以下に整理してみました。
命名の対象 | 命名規約 | 例 |
---|---|---|
プロジェクト | ・すべてアルファベット小文字 ・アルファベット大文字、記号は使わない | example exproj |
パッケージ | ・すべてアルファベット小文字 ・アルファベット大文字、記号は使わない | example expkg |
クラス | ・パスカルケースを使う | Example ExampleCls |
変数 | ・キャメルケースを使う | example exampleNum |
定数 | ・すべてアルファベット大文字 ・複数単語になる時はスネークケースを使う | EXAMPLE EXAMPLE_NUM |
メソッド | ・キャメルケースを使う | example exampleMtd |
アルファベット大文字や一部の記号については、
WebシステムのURLや、開発で使うバージョン管理のツールで
識別できない場合もあるので、(大文字小文字が区別できないなど)
プロジェクト名やパッケージ名については、
アルファベット大文字や記号はできるだけ使わないことが望ましいです。
また、私の個人的な考えとして、プロジェクト名やパッケージ名を
付ける時の単語数はなるべく少なくシンプルな方が良いと考えます。
命名する時のお作法
規約とまではいかないですが、
命名する時に意識しておくと良いことをご紹介します。
戻り値にboolean型を指定するメソッド
例えば、数字かどうかをtrue、falseで返す時は「isNumber」のようにしておくと
他の人にもメソッドの内容が一目で理解しやすく使い勝手が良いです。
・boolean判定するメソッドの先頭に「is」「has」などをつける
例)isNumber、hasString
booleanを使うメソッド以外でも、名詞だけでなく、動詞を最初につけるなどすれば
メソッドとしての動きが伝わりやすい場合もあります。
意味のわかる単語を使う
プログラムにはアルファベットを使うので、変数やメソッド、クラス名を決める時に、
英語を使おうとしがちですが、普段誰も使わない単語を使わないようにしましょう。
名前を見て、何に使うのか、どんな値が入っているのか
読むだけで推測しやすいものが望ましいです。
・一般的でない英単語を無理に使わない
・内容が推測しやすい単語を使う
・難しい英単語よりローマ字にした方が良い場合もある
例)見積をする ⇒ △「estimate」、〇「mitumori」
ローマ字の利用については、好みもあると思います。
例では、「見積をする」という単語について書きましたが、
人によっては、英単語の方がわかりやすいと思ったり、
慣れたり覚えれば問題ないと考える人もいます。
その辺りは、チーム内の雰囲気にあわせて使い分けていきましょう!
命名規則を使ったサンプルコード
命名規則に沿って名前をつけたサンプルコードをご紹介します。
ロボット君を作成して自己紹介してもらいました。
サンプルコードの構成は以下です。
ロボット君のクラスです。
エネルギーはインスタンス化する際にコンストラクタで指定します。
また、名前を定数として持っていて、自己紹介する時に使います。
package robot;
// クラス:ロボット
public class Robot {
// フィールド:エネルギー
public int energy;
// 定数:名前
private final String ROBOT_NAME = "ロボット君";
// コンストラクタ
public Robot(int energy) {
this.energy = energy;
}
// メソッド:自己紹介
public void selfIntroduction() {
System.out.println(ROBOT_NAME + "デス!ヨロシク!");
System.out.println("ワタシのエネルギーは「" + energy + "」デス!");
}
}
メイン処理実行用のクラスです。
package example;
import robot.Robot;
// クラス:メイン処理実行用
public class Example {
// メイン処理
public static void main(String[] args) {
// ロボット
Robot robot = new Robot(100);
// 自己紹介
robot.selfIntroduction();
}
}
実行結果は以下です。
ロボット君デス!ヨロシク!
ワタシのエネルギーは「100」デス!
どの国のどの会社に行っても、この書き方で開発をしている人が多いので、
今のうちに慣れておきましょう!
Javaの命名規則 まとめ
Javaの命名規則について以下説明しました。
・Javaの命名規則について
・プログラムの命名仕様
・キャメルケース、パスカルケース、スネークケース、ケバブケース
・定義する時の命名規則
・命名する時のお作法
命名規則を知らないまま自己流でプログラムを書くクセがついてしまうと、
仕事などでチーム開発をする時に大変苦労します。
可読性の高いプログラミングを習得することは
品質の高いプログラムを目指す上で大切なことです。
今のうちにお作法に慣れておきましょう!