minimize

for文のネスト

for文のネスト(多重ループ)をするときの注意点です。
まず、ネストは多くても3段までにしましょう(できれば2段まで)。
これ以上にすると複雑過ぎて保守が困難になります。
メソッド化するなり、何らかの対処が可能なはずです。

for (int i = 0; i < parents.size(); i++) {
  Object parent = parents.get(i);
  for (int k = 0; k < 20; k++) { // i++ と間違えない事
    Object child = parent.get(k); // [i] と間違いない事
    ...
  }
}

2つ目以降のネストでは、対象となる変数を間違えないように注意が必要です。

PMD : JumbledIncrementer
FindBugs : QF: Complicated,subtle or wrong increment in for-loop

JDK5

JDK5では、拡張ループ構文を使うことで以下のような記述が可能です。

for (Object parent : parents) {
  for (Object child : parent) {
    ...
  }
}

こうすれば、変数の記述間違いは発生しません。

if / try文のネスト

これも、あまり深くならないようにしましょう。

CheckStyle : NestedIfDepth / NestedTryDepth

for と while の使い分け

これらはどちらもループ構文であり、相互に書き換える事が可能です。

// Type 1
for (i = 0; i < 10; i++) {
  ...
}

// Type 2
i = 0;
while (i < 10) {
  ...
  ++i;
}

for文は3つの式を使うので、while文よりは複雑な使い方が可能です。
while文は1つの式しか使わないのでよりシンプルです。

PMD : ForLoopShouldBeWhileLoop

[コメント(0)]