良い変数名
プログラムでは、名前を付ける場面が数多くあります。ここからは、個々の要素である変数名、メソッド名、クラス名、パッケージ/ネームスペース名の良い名前について見ていきます。まずは変数名です。
説明的な変数名
変数には値やオブジェクトが格納されています。変数名を見るだけで、何がどのような役割として格納されているのか明確なものが良い名前と言えます。
たとえば、
のように「n」「languages」「flg」「userAgent」という変数名を付けられても、あとから見返したときに変数の役割がわかりません。
次のように「orderCount」「availableLanguages」「exists SameName」「unknownUserAgent」と具体的で明確な名前付けにしておけば、あとから見返したり、他人が見ても理解しやすいコードになります。
ただし変数は、変数の種類とその変数のスコープ[3]によって求められる良い名前の性質が異なってきます。スコープが広いとさまざまな個所から参照されるので、影響範囲が大きいと言えます。よって、より具体的な名前付けが求められます。それでは以下、種類別に見てみましょう。
フィールド変数、クラス変数
フィールド変数とはインスタンス変数のことです。フィールド変数、クラス変数はローカル変数などと比較すると変数のスコープが広いため、特にその変数の意味を正しく表現した名前が望ましいです。
メソッドのパラメータ
パラメータ名は、わかりやすくて簡潔な名前がよいでしょう。パラメータ名は利用者がAPIリファレンスで参照したり、Eclipseなどの統合開発環境から変数名の候補として利用されるので、極端に短い名前を付けるのは避けるべきです。
ローカル変数
メソッド内などで一時的に宣言される変数です。スコープは長いものもあれば、for文で使用するiなどのループカウンタのように短いものもあります。
スコープが長いものは、フィールド変数と同様、変数の意味を正しく表現する具体的な名前を付けてください。
スコープの短いものに関しては、以降で説明するような使い分けを適宜行ってください。
イディオムに従う/従わない
配列の中身を逐次処理するループカウンタ変数(i、j、k)などのように、よく使われる慣習的な変数名は、そのままイディオムに従ったほうがわかりやすいコードになります。
ただし例外的な場合もあります。具体的な名前を変数名にしたほうがわかりやすい場合はそうします。たとえば座標系を扱う場合などです。
変数名が短くしたほうが可読性が向上する場合もある
十分に見通せる範囲で一目瞭然の場合、一時的な変数は短くてもかまいません。特に、ループ内の変数や短いメソッド内の変数では、短くしたほうが逆に可読性が向上する場合があります。