The King's Museum

ソフトウェアエンジニアのブログ。

【Effective Java】項目45:ローカル変数のスコープを最小限にする

ローカル変数のスコープは最小限にするべきです。

Java では古いバージョンの C 言語と違って、文が書ける場所であれば変数宣言を書くことができます。 スコープの先頭ですべての変数を宣言せず必要な箇所で変数を宣言すれば、変数のスコープを最低限に保てます。

加えて、ローカル変数宣言はほとんどの場合、初期化されるべきです。 唯一の例外は try-catch の部分です。

while よりも for

Iterator を走査する場合は while ループよりも for の方が望ましいです。

while ループの場合はより大きなスコープに変数を宣言する必要があるからです。

Iterator<Element> i = c iterator();
while (i.hasNext()) {
    doSomething(i.next()); 
}
// => while の外側に変数宣言が必要

ループ変数

for ループでは、ループ内だけで有効なループ変数を宣言できるので、常にこれを利用するべきです。

for (Element e : c) {
    doSomething(e);
}

for (int i = 0, n = expensiveComputation(); i < n; i++) {
    doSomething(i);
}

後者の例ではループ変数 i と n の両方を定義しています。 特に変数 n を求めるためにコストの高い計算が必要な場合に有用です。

感想

ここらへんは当り前かなーという感じかな。

(c) The King's Museum