我有一份需要处理的清单。这些项目被启用或禁用。用户可以选择是否显示禁用的项目。
所以你有cond2
这取决于项目,cond1
但事实并非如此。这是我陷入的两难境地:我应该使用cond1 && !cond2
or!(!cond1 || cond2)
吗?cond2
或者我应该在循环之前检查(显示禁用的项目)?我还认为(正如您将在我放置的代码中看到的那样)如果我应该放置cond2
before 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我不知道如何进行测量以查看实际值,如果相关,请执行。
谢谢。