簡體   English   中英

如何擺脫if-else語句混亂?

[英]How to get rid of if-else statement clutter?

if (Functioncall){}     
else if (Functioncall){}

if (Functioncall){}

if (Functioncall){}

if (Functioncall){ 
                 if (Functioncall){                       

                                  if (Functioncall){}

                                  }
                  }
else {}

每個函數調用都返回一個布爾值,並根據返回值執行一組語句。 我試圖擺脫if-else階梯,它們似乎使代碼混亂。

我該怎么辦?

您可以檢查相反的條件並返回“早”。 這樣,當您(或其他人)讀取代碼時,您將擁有更清晰的代碼流,更少的縮進以及更清晰的邏輯。

看看這些:

在您的情況下,它將類似於:

if (!Functioncall)
    return;

if (!OtherFunctioncall)
    return;

等等

根據代碼的編寫方式,嵌套的if可以寫為大if

if(Function1 && Function2 && Function3){

}else{}

如果您的代碼是

if (Functioncall){ 
    if (Functioncall){
        if (Functioncall){
            // the code
        }
    }
}

那么上面的代碼是相同的。

您有一些選擇:

  • 的switch-case從句
  • 使您的代碼更好地模塊化。 細分為方法(也更容易看到重復的代碼)
  • 檢查是否相反,並立即返回。 可能會幫助您解決嵌套ifs

看來您的函數都在返回bool 返回true表示成功, false表示失敗嗎? 如果是這樣,則應將函數更改為void並在失敗時引發Exception 然后,調用代碼無需檢查返回值。

暫無
暫無

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

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