簡體   English   中英

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)
}

例如:

 if (something) if (something else) ... else (blah blah) 

是這樣的:

  if (something) { if (something else) ... else (blah blah) } 

在這種情況下,是的,它們是相同的,但前者比后者更難閱讀。 我建議總是使用大括號,即使是由單行組成的代碼塊。

  • 最后兩個語句執行相同的操作; 省略括號是合法的,但不建議使用。

  • 如果else if省略括號,則else if始終屬於最內層的 if語句。

    參考:如果大括號被省略,則鏈接到IF ELSE行為
  • 此URL: 使用大括號的代碼研究鏈接包含分析結果,並指出代碼中省略“if語句”大括號的項目更有可能存在錯誤。
  • 如果開發人員故意省略大括號(這是合法的),那么下一個開發人員在沒有大括號的情況下查看代碼將不得不在心理上“解析”其他所有其他if並將else if與最接近的if語句匹配。 ifelse ifelse匹配, if就更容易匹配縮進對齊的大括號。
  • 當頂級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所說,只有在省略花括號時才會執行下一個語句。

    通常,大括號有助於代碼的組織和可讀性,因此通常會使用它們。

    我的問題是:將它寫成:

    您需要詢問的事實是使用大括號的一個非常好的理由。 代碼,編譯器和任何可能需要閱讀和推理代碼的人,包括您自己的未來自我,總會有兩個受眾。

    通常,編譯器不需要大括號,但增強了其他受眾的可讀性。

    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;
    

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM