哪个更好,将if语句嵌套在if块中,或嵌套在else块中?
一个。
if (cond1)
if (cond2){
statement1;
statement2;
...
}
else {
statement3;
statement4;
...
}
else {
statement5;
statement6;
...
}
湾
if (!cond1) {
statement5;
statement6;
...
}
else if (cond2) {
statement1;
statement2;
...
}
else {
statement3;
statement4;
...
}
感谢目前为止的回复。我只是编辑了选项,但我的主要关注点恰恰是这样:如果你有一个选择,(通过改变条件表达式)最好将if语句嵌套在更高级别,如果是块或其它块? (a)只是在if块中嵌套if的一个例子,(b)是在else块中嵌套if的一个例子。再次感谢大家的时间。
答案 0 :(得分:1)
实际上,您的示例不匹配。我会重写第一个:
if(cond && cond2)
{
}
else
{
}
如果你的第一个例子的陈述是:
,我唯一会嵌套if(cond)
{
if(cond2)
{
// Stuff that requires both conditions to be true.
}
// Stuff that requires only the first condition to be true.
}
else
{
}
答案 1 :(得分:1)
编辑:感谢您澄清问题。问题现在真的是风格之一,归结为最具可读性的问题。一般来说,当你有一个真正的多向条件时,后者更好,这意味着在代码中的某些点上,有三个可能的条件同样可能并且同样合理。前者更清晰,或许在语义上cond1是真正的驱动程序,而cond2是一种从属条件,人们只会在cond1为真时考虑。
OLD ANSWER:
这是对问题的一种解释(“嵌入其中”):
if (cond1) {
if (cond2) {
A
}
} else {
B
}
正如贾斯汀指出的那样,这应该写成
if (cond1 && cond2) {
A
} else {
B
}
除非代码需要位于if cond1
1>}
if cond2
部分。 >
您的问题的另一种解释(“嵌套在其他内部”)是:
if (cond1) {
A
} else {
if (cond2) {
B
}
}
在这种情况下,您应该重写为
if (cond1) {
A
} else if (cond2) {
B
}
因为它更好地表达了多路条件的概念。再次,如果有某些东西属于非cond1但不属于cond2的范围,那么你需要嵌套。
希望有所帮助。
答案 2 :(得分:0)
编辑:在这种情况下,我认为两者都不一定更好。在我看来,(b)更容易阅读和遵循逻辑。任何一个人都会这样做!
(a)中的else是否与第一个if语句或第二个一起使用?顺便说一下,我会假设它与第一个if语句一致,但如果是这种情况,那么你的两个例子在逻辑上是不一样的。