我們平時寫if,switch或for語句是常有的事兒,也一定寫過多層if或for語句嵌套的情況,如果代碼裡的嵌套超過3層,閱讀起來就會非常困難了。我們應該盡量避免代碼嵌套多層,最好不要超過2層。
if語句嵌套的問題
多層if語句嵌套是常有的事情,有什麼好的方法可以減少嵌套呢?
1 盡早終止函數或返回數據
如果符合某個條件下可以直接終止函數,則應該將這個條件放在第一位。我們來看看下面的例子。
if(condition1) {
if(condition2){
if(condition3){
}
else{
return;
}
}
else{
return;
}
}
else {
return;
}
這段代碼中if語句嵌套了3層,看起來已經很復雜了,我們可以將最後面的return提取到最前面去。
if(!condition1){
return;
}
if(!condition2){
return;
}
if(!condition3){
return;
}
//doSomething
這段代碼中,我們把condition1等於false的語句提取到前面,直接終止函數,將多層嵌套的if語句重構成只有一層if語句,代碼也更清晰了。
注意:一般情況下,我們寫if語句會將條件為true的情況寫在前面,這也比較符合我們的思維習慣。如果是多層嵌套的情況,應該優先減少if語句的嵌套
2 提取內層嵌套為一個函數進行調用
多層嵌套的時候,我們還可以將內層嵌套提取到一個新的函數中,然後調用該函數,這樣代碼也就更清晰了。