Java 嵌套if或代码多次?
因为我找不到一个类似于我的构造的问题,所以我要问它 我有以下代码:Java 嵌套if或代码多次?,java,multiple-conditions,nested-if,Java,Multiple Conditions,Nested If,因为我找不到一个类似于我的构造的问题,所以我要问它 我有以下代码: for (Object o : array1) { for (Object o2 : array2) { if (condition1) { //get a variable for condition2 (depends on iteration elements) if (condition2) { if (conditi
for (Object o : array1) {
for (Object o2 : array2) {
if (condition1) {
//get a variable for condition2 (depends on iteration elements)
if (condition2) {
if (condition3) {
//do something
} else if (condition4) {
//do something
}
}
}
}
}
我也可以把它写成
for (Object o : array1) {
for (Object o2 : array2) {
if (condition1 && condition3) {
// get a variable for condition2 (depends on iteration elements)
if (condition2) {
// do something
}
} else if (condition1 && condition4) {
// get a variable for condition2
if (condition2) {
// do something
}
}
}
}
这也是同样的道理。在第一个示例中,我尽可能多次使用代码,而在第二个示例中,我必须多次使用相同的代码
现在我读到,如果可能的话,应该避免筑巢。然而,在我的理解中,与第一个示例中的代码不同,多次使用相同的代码也更干净
我的问题是,是否应该避免重复使用相同代码的成本?我在这里询问的是最佳实践/标准,而不是意见
我知道我可以将它移动到一个单独的方法中,但最终我可能会有大约相同数量的代码 编辑: 在Lino的回答和评论的帮助下,我提出了以下构想:
for (Object o : array1) {
// get a variable for condition2 (depends on iteration elements)
if (condition2) {
for (Object o2 : array2) {
if (condition1) {
if (condition3) {
// do something
} else if (condition4) {
// do something
}
}
}
}
}
假设条件3和4仅在条件1和条件2的计算结果必须为
true
时执行,则以下代码段将最有效:
for (Object o : array1) {
for (Object o2 : array2) {
if (condition1 && condition2) {
if (condition3) {
//do something
} else if (condition4) {
//do something
}
}
}
}
如果您仍然不喜欢嵌套的ifs,您也可以存储来自条件1和&condition2
的结果:
for (Object o : array1) {
for (Object o2 : array2) {
final boolean condition1And2 = condition1 && condition2;
if (condition1And2 && condition3) {
//do something
} else if (condition1And2 && condition4) {
//do something
}
}
}
目前,这两个代码段的作用并不相同。在第一种情况下,仅当满足条件1和2时,才执行条件3和4。在第二种情况下,它有些不同,条件2可以满足,如果1和3是,或者如果1和4是,那么我应该为条件2获取一个变量,如果我不想在每次迭代中执行该部分?@XtremeBaumer在迭代之前获取该变量怎么样?如果它不依赖于迭代中的元素,那么它可能工作得最好,但是它确实依赖于元素,因此我无法得到它before@XtremeBaumer从内环还是外环的元素?如果它来自外部,则可以在内部循环之前定义它。如果它确实依赖于内在,那么你就不会在每一天都来呼唤它iteration@XtremeBaumer很抱歉让您失望,但最佳实践仍然是基于意见的。。。