嵌套 if 或代码多次?
Nested if or code multiple times?
由于找不到与我的构造类似的问题,所以我要问一下。
我有以下代码:
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
}
}
}
}
这将以相同的方式工作。在第一个示例中,我尝试尽可能多地使用代码,而在第二个示例中,我不得不多次使用相同的代码。
现在我读到 on this question,应该尽可能避免嵌套。然而,根据我的理解,不要像第一个示例中那样多次使用相同的代码也更清晰。
我的问题是,是否应该避免嵌套多次使用相同代码的成本?我在这里问的是最好的 practices/standards,而不是意见。
我知道我可以将它移到一个单独的方法中,但最终我可能会有大约相同数量的代码。
编辑:
在 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,您也可以存储 condition1 && 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
}
}
}
由于找不到与我的构造类似的问题,所以我要问一下。
我有以下代码:
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
}
}
}
}
这将以相同的方式工作。在第一个示例中,我尝试尽可能多地使用代码,而在第二个示例中,我不得不多次使用相同的代码。
现在我读到 on this question,应该尽可能避免嵌套。然而,根据我的理解,不要像第一个示例中那样多次使用相同的代码也更清晰。
我的问题是,是否应该避免嵌套多次使用相同代码的成本?我在这里问的是最好的 practices/standards,而不是意见。
我知道我可以将它移到一个单独的方法中,但最终我可能会有大约相同数量的代码。
编辑:
在 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,您也可以存储 condition1 && 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
}
}
}