if-else 块中的大括号
Curly braces in if-else blocks
我在 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;
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)
}
For example:
if (something)
if (something else)
...
else (blah blah)
Is the same that:
if (something)
{
if (something else)
...
else (blah blah)
}
在这种情况下,是的,它们是相同的,但前者比后者更难阅读。我建议始终使用大括号,即使对于由一行组成的代码块也是如此。
最后2条语句执行相同;省略大括号是合法的,但不建议这样做。
如果 else if
省略大括号,else if
总是属于 innermost if
语句.
REFERENCE: Link to the IF ELSE behavior if braces are Omitted
此 URL: Link to Study of Code with Braces Omitted 包含分析结果,并指出使用代码省略 "if statements" 大括号的项目更有可能出现错误。
如果开发人员故意省略大括号(这是合法的),则下一个查看没有大括号的代码的开发人员将不得不在心理上 "parse" 其他如果并且将 else if 匹配到最接近的 if 语句。 当有缩进对齐的大括号时,将 if
匹配到 else if
和 else
会容易得多。
当顶级 if 语句中大括号内的代码缩进 4 个空格,而第二级 if 语句中的代码缩进 8 个空格时,代码最容易阅读,如下所示:
if (var1 == 1) {
action1();
}
else if (var1 == 2) {
action2();
}
else if (var1 == 3) {
if (var2 == 1) {
action31();
}
else if (var2 == 2) {
action32();
}
}
对于Java,花括号对于if-else语句是可选的。正如 Jared 所说,当省略花括号时,只会执行下一条语句。
通常大括号有助于代码的组织和可读性,因此通常会使用它们。
My question is: Is it the same to write that as:
您需要询问的事实是使用牙套的一个很好的理由。代码总是有两种受众,一种是编译器,一种是可能需要阅读和推理代码的任何人,包括你未来的自己。
通常,大括号对于编译器来说是不必要的,但可以提高其他读者的可读性。
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;
我在 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;
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)
}
For example:
if (something) if (something else) ... else (blah blah)
Is the same that:
if (something) { if (something else) ... else (blah blah) }
在这种情况下,是的,它们是相同的,但前者比后者更难阅读。我建议始终使用大括号,即使对于由一行组成的代码块也是如此。
else if
省略大括号,else if
总是属于 innermost if
语句.REFERENCE: Link to the IF ELSE behavior if braces are Omitted
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();
}
}
对于Java,花括号对于if-else语句是可选的。正如 Jared 所说,当省略花括号时,只会执行下一条语句。
通常大括号有助于代码的组织和可读性,因此通常会使用它们。
My question is: Is it the same to write that as:
您需要询问的事实是使用牙套的一个很好的理由。代码总是有两种受众,一种是编译器,一种是可能需要阅读和推理代码的任何人,包括你未来的自己。
通常,大括号对于编译器来说是不必要的,但可以提高其他读者的可读性。
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;