新人SE・PG教育にも使える!Javaのプログラムに適切な名前をつける
ジョブサポートのエンジニア研修ではソースコードの書き方はもちろん、コメントの書き方につい
ても研修中から指導していきます。新人SE・PGの教育担当はもちろん、自学でプログラムの質を
高めたい方にも活用できるのではないかと思います。
読みやすいJavaのプログラムを書くには、変数やクラス、メソッド、その他において、適切な名前
をつけることが大切です。名は体を表します。 適切な名前がつけられていれば、その変数の役割や
関数の使い方が予測できるため、プログラムが読みやすくなります。
今回もJava研修の情報を活用して変数やクラス、メソッド等に対する名前の付け方について
記載します。
■関連記事
目次[非表示]
変数の役割を明確に表す名前をつけよう
変数には、その変数が持つ役割を明確に表す名前をつけましょう。
適切な名前がつけられた変数を使用したソースコードからは、 「こういう計算を行う」 とか
「この値を求めたい」 というようなプログラマの意図を読み取ることができます。
逆に、変数に適切な名前がつけられていない場合、一目見ただけではその処理の目的を理解する
ことができません。 前後の処理内容から推察したりするなどの解析が必要になるため、
とても難解に感じてしまいます。
考えるのが面倒くさいからといって、 「a」や「b」のような意味のないアルファベット1文字の
名前をつけたりしてはいけません。もし、変数につける名前を考えたときに適切な名前が思い
つかなかったら、 その変数の役割を十分に把握できていない可能性があります。 一
度頭の中を整理し、実現したい処理とそのためにどのような役割の変数が必要であるかを考えて、
それぞれの変数に適切な名前をつけるようにしましょう。
また、変数と同様にメソッドの引数にも適切な名前をつけるようにしましょう。
引数は、その引数が呼び出し元からどのような値をもらうのかが明確に分かるような名前を
つけてください。
プロエンジニア育成コース(1~3ヶ月)ー株式会社ジョブサポート
クラスやメソッドの役割や処理内容を表す名前をつけよう
クラスには、そのクラスが行なう役割の内容を表す名前をつけましょう。
またメソッドには、そのメソッドが行う処理の内容を表す名前をつけましょう。
変数と同様、クラスやメソッドに適切な名前がつけられている場合は、そのクラスやメソッドの
呼び出し箇所を見たときに 「ここでこの処理を行う」 とか 「この値を取得する」 というような
プログラマの意図を読み取ることができます。
逆に、クラスやメソッドに適切な名前がつけられていない場合、 そのクラスやメソッドの呼び出し
によって何が実行されるのかが分からなくなります。 そのクラスやメソッドのソースコードを解析
したりしないとプログラムの動きを把握することができないため、とても読みにくく感じてしまい
ます。
また、メソッドは、「~~処理を行う」 「~~の値を取得する」 というように、プログラムが
目的の動作を 実行するものなので、一般的に動詞から始まる名前をつけるとしっくりくることが
多いようです。
慣習的な名前をつけよう - ループカウンタ
ループ処理で使用するループカウンタには、 i, j, k, … といった名前のint型変数がよく使用されす。
そのループ処理が配列要素を順番に参照する等、単純にカウンタを進めるだけのループであれば、
このような慣習的な「i」などの名前で扱ったほうがよいです。
そうすることで、他人が読んだ時にもその変数がループカウンタであることが暗黙的に伝わるため
読みやすくなります。
ただし、特に多重ループにおいてそのループカウンタが特別な意味を担っていたりする場合
は i や j ではなく、適切な変数名をつけるべきです。 例えば画像処理を行う際、ピクセル情報をxと
yの座標値で扱ったりしますが、 その場合は i, j ではなく、 x, y といったループカウンタ名のほうが
意味が伝わりやすくなります。
スコープが十分に狭い場合には短い変数名を使おう
変数にはその変数の役割にあった名前をつけるべきですが、ときにはより短い名前をつけるほうが
望ましい場面があります。
数行程度のメソッドや短いループ処理など、 処理内容が一目で見渡せるくらい十分に狭いスコープ
で使用される一時変数には、そこまで立派な名前は必要ありません。 処理が短ければどのような
処理が行われているかは容易に理解できる場合が多いので、 役割をきちんと表すようにそれなりの
長さの名前をつけるよりも、 ある程度簡略化した短い文字の名前をつけたほうが視界の邪魔になら
ず読みやすくなります。
また、説明量を落とさずに変数名を短くするテクニックとして、「単語の一部を省略する」
という方法があります。例えば、何かの回数を数える時、カウンタ変数として名前に 「cnt」 を
つけた変数がよく使用されます。 「cnt」 は 「count」 を略したものです。
単語の一部を省略した形式の変数名として、他にも以下のようなものがよく使用されます。
3文字程度に省略したり母音を削ったりして短くすることが多いようです。
変数の使いまわしはやめよう
変数にはその変数の役割にあった名前をつけます。 個々の変数はその名前の通りの役割をするよう
に使用するべきです。
メモリ領域の節約のため、あるいは別の変数を用意するのが面倒だからといって、 その変数の
名前にそぐわない別の目的で使用したりしてはいけません。 そのような「変数の使い回し」を
すると、プログラムの流れが追いづらくなります。 また、処理の終わりのほうで参照した値が実は途中で意図しない値に書き換えられていた、という ようなバグも発生しやすくなってしまいます。
現在の大容量メモリのコンピュータ環境では、 たかだか数バイトの領域を節約してもプログラムのパフォーマンスが向上したりするようなことはありません。 よって、読みやすくバグの発生する可能性の低いプログラムにするため、変数の使い回しはやめましょう。 それぞれの目的に合った変数を、適切な名前で用意するようにしてください。
短期講座(Java入門5日・基礎10)ー株式会社ジョブサポート
マジックナンバーに名前をつけよう (定数を定義しよう)
ソースコードに直接記述された「10」や「5000」などの固定の数値は「マジックナンバー」と
呼ばれます。マジックナンバーは、プログラムを記述した直後であれば書いた本人にはおそらく
その数字の意味が理解できます。 しかし、他人がそのプログラムを読んだ時あるいは時間がたって
自分がそのプログラムを読み返した時、 マジックナンバーはその意味や意図が理解できず、
プログラムの解読が難しくなります。
これを避けるため、マジックナンバーには定数を使って適切な名前をつけるようにしましょう。
適切な名前をつけることにより何の数字なのか、 どのような目的の処理なのかという意図が
読む人に伝わるようになるため、読みやすくなります。
オンライン・リモート講座(入門5日・基礎10日)ー株式会社ジョブサポート
一時変数やメソッドを使って式にも名前をつけよう
計算式や判定式にも名前をつけることができます。
例えば計算の結果を一時変数に格納するようにして、その変数に適切な名前をつけるのです。
この場合は計算式というよりは計算結果に対して名前をつけることになります。
また、計算式や判定式が長かったり複雑だったりする場合は、 その処理部分をメソッドとして
切り出すと、 ごちゃごちゃした記述が消えてより読みやすくなります。
この場合は計算式/判定式自体に名前をつけることになります。
名前をつけることにより、その計算や判定が何のための計算なのか、 何の判定をしているのかが
明確になります。 読む人に意図が伝わりやすくなるため、読みやすいプログラムになります。
ジョブサポートのプロエンジニア育成コース(Java・フロントエンド)ではソースコードの記述に
ついても教育しており、業務で使える教育を行っております。。