Java if-else块中的花括号
我正在用java编程,我碰巧发现自己有这样一个习惯:Java if-else块中的花括号,java,if-statement,curly-braces,Java,If Statement,Curly Braces,我正在用java编程,我碰巧发现自己有这样一个习惯: if(nodo == null) return null; else if(nodo.izquierda!=null && nodo.derecha==null) return nodo.izquierda; else if(nodo.izquierda==null && nodo.derecha!=null) return nodo.derecha; e
if(nodo == null) return null;
else if(nodo.izquierda!=null && nodo.derecha==null)
return nodo.izquierda;
else if(nodo.izquierda==null && nodo.derecha!=null)
return nodo.derecha;
else return null; // si ambos hijos son nulos o no nulos
我的问题是:这样写是一样的吗
if(nodo == null)
return null;
else {
if(nodo.izquierda!=null && nodo.derecha==null)
return nodo.izquierda;
else {
if(nodo.izquierda==null && nodo.derecha!=null)
return nodo.derecha;
else return null; // si ambos hijos son nulos o no nulos
}
}
最让我困惑的是,如何在if-else块中使用花括号。有必要用花括号吗
例如:
if (something)
if (something else)
...
else (blah blah)
if (something)
if (something else)
...
else (blah blah)
这与:
if (something)
{
if (something else)
...
else (blah blah)
}
if (something)
{
if (something else)
...
else (blah blah)
}
例如:
if (something)
if (something else)
...
else (blah blah)
if (something)
if (something else)
...
else (blah blah)
这与:
if (something)
{
if (something else)
...
else (blah blah)
}
if (something)
{
if (something else)
...
else (blah blah)
}
在这种情况下,是的,它们是一样的,但前者比后者更难阅读。我建议始终使用大括号,即使对于由一行组成的代码块也是如此。
else If
省略大括号,则else If
始终属于最里面的If
语句。if
匹配到else if
和else
要容易得多。if (var1 == 1) {
action1();
}
else if (var1 == 2) {
action2();
}
else if (var1 == 3) {
if (var2 == 1) {
action31();
}
else if (var2 == 2) {
action32();
}
}
if(nodo == null)
return null;
else {
if(nodo.izquierda!=null && nodo.derecha==null)
return nodo.izquierda;
else {
if(nodo.izquierda==null && nodo.derecha!=null)
return nodo.derecha;
else return null; // si ambos hijos son nulos o no nulos
}
}
事实上,你需要问是一个很好的理由,使用括号。代码总是有两个受众,一个是编译器,另一个是任何需要阅读和推理代码的人,包括你自己未来的自己
通常情况下,大括号对于编译器来说是不必要的,但是可以增强其他读者的可读性。如果
语句使用if,则不需要大括号。如果它们不存在,那么如果子句If为true,则将使用下一个参数,并且仅使用下一个参数。你的else语句也是如此。如果没有方括号,则只有下一条语句是else子句的一部分,其他任何语句都不会被视为您的If…else…
语句的一部分。有花括号用于封装代码块。通常,最好使用带有适当缩进的括号,以便读者清楚地知道代码所属的位置。在单行if语句中不使用花括号可能会让人对节省的2或3个字节感到自豪,但是我发现这是在代码中引入错误的最简单的方法之一,因为一个小的键入错误很容易改变大量的逻辑。虽然这段代码可以解决这个问题,如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释,并说明适用的限制和假设。
if(nodo != null)
if(nodo.izquierda != null && nodo.derecha == null)
return nodo.izquierda;
else if(nodo.izquierda == null && nodo.derecha != null)
return nodo.derecha;
return null;