処理する必要のあるリストがあります。アイテムは有効または無効になっています。ユーザーは、無効になっているアイテムを表示するかどうかを選択できます。
ですから、それcond2
はアイテムに依存しますが、そうcond1
ではありません。これが私が陥ったジレンマです:私は使うべきですかcond1 && !cond2
、それとも!(!cond1 || cond2)
?またはcond2
、ループの前に(無効なアイテムを表示する)を確認する必要がありますか?
また、ブール変数であり、「短絡」(遅延評価?)を使用すると、cond2
前cond1
に置く必要があるかどうかも考えました(遅延評価?)。cond2
私の主な関心事はスピードでした。ループ内に多くのアイテムがある場合、これは重要な変更になる可能性があります。
これは、オプションを示すコードです。
// First Option
for (String item : items) {
doSomethingFirst(item);
if (isDisabled(item) && !showDisabled) {
continue;
}
doSomethingElse(item);
}
// Second Option
for (String item : items) {
doSomethingFirst(item);
if (!(!isDisabled(item) || showDisabled)) {
continue;
}
doSomethingElse(item);
}
// Third Option
if (showDisabled) {
for (String item : items) {
doSomethingFirst(item);
doSomethingElse(item);
}
} else {
for (String item : items) {
doSomethingFirst(item);
if (isDisabled(item)) {
continue;
}
doSomethingElse(item);
}
}
それで、順序isDisabled(item)
と重要性はありshowDisabled
ますか?ループの前に物事をチェックする必要がありますか?それともコンパイラはそれを最適化しますか?(私は疑う...)
PS実際の値を確認するためにどのように測定するかわかりません。関連がある場合は、実行してください。
ありがとう。