良い変数名
プログラムでは,
説明的な変数名
変数には値やオブジェクトが格納されています。変数名を見るだけで,
たとえば,
// ×何の数値?
int n;
// ×何の言語?
String[] languages = {"ja", "en"};
// ×何のフラグ?
boolean flg = false;
// ×何のユーザエージェント?
UserAgent userAgent;
のように
次のように
// ○オーダー数ということが明確
int orderCount;
// ○利用可能な言語
String[] availableLanguages = {"ja", "en"};
// ○同性同名が存在するか?(存在する場合=true)
boolean existsSameName = false;
// ○未知のユーザエージェント
UserAgent unknownUserAgent;
ただし変数は,
- 注3)
- 変数の値を参照できる範囲のこと。変数の宣言から始まり,
変数の値が参照できなくなるまでの範囲。
フィールド変数, クラス変数
フィールド変数とはインスタンス変数のことです。フィールド変数,
メソッドのパラメータ
パラメータ名は,
ローカル変数
メソッド内などで一時的に宣言される変数です。スコープは長いものもあれば,
スコープが長いものは,
スコープの短いものに関しては,
イディオムに従う/ 従わない
配列の中身を逐次処理するループカウンタ変数
// ×ループカウンタの変数名が慣習的ではなく長過ぎる
for (int empCounter = 0; empCounter < employes.size;
empCounter++) {
Employee emp = employees[employeeCounter];
...
}
// ○ループカウンタの名前が慣習的で短く,可読性が高い
for (int i = 0; i < employes.size; i++) {
Employee emp = employees[i];
...
}
ただし例外的な場合もあります。具体的な名前を変数名にしたほうがわかりやすい場合はそうします。たとえば座標系を扱う場合などです。
// ×i,jのどちらがx座標,y座標なのかわからなくなる
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j+) {
int color = getColor(i, j);
...
}
}
// ○変数名をx,yとしたので,わかりやすい
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y+) {
int color = getColor(x, y);
...
}
}
変数名が短くしたほうが可読性が向上する場合もある
十分に見通せる範囲で一目瞭然の場合,
// ×変数名siteContactChangelogは長過ぎる
for (int i = 0; i < siteContactChangelogs.length; i++) {
SiteContactChangelog siteContactChangelog
= siteContactChangelog[i];
siteNames[i] =
siteContactChangelog.getSiteName();
siteTitles[i] =
siteContactChangelog.getSiteTitle();
sitePicIds[i] =
siteContactChangelog.getPicId();
sitePicNames[i] =
siteContactChangelog.getPicName();
}
// ○変数名logで十分意味は理解でき,可読性も向上する
for (int i = 0; i < siteContactChangelog.length; i++) {
SiteContactChangelog log
= siteContactChangelog[i];
siteNames[i] = log.getSiteName();
siteTitles[i] = log.getSiteTitle();
sitePicIds[i] = log.getPicId();
sitePicNames[i] = log.getPicName();
}