這取決於上下文。如果您有重複的業務邏輯就像
if(object.color === 'red'){
runApple();
} else if (object.isRound){
runApple();
} else if(object.isTasty){
runApple();
}
,那麼你可以重構所有進入
function isApple(object){
return object.color === "red" || object.isRound || object.isTasty;
}
if(isApple(object){
runApple();
}
如果要運行的業務邏輯是完全不同的但不是你可以嘗試所有的條件組進某種功能
eg
function isCondition1_2or3(){
return isCondition1() || isCondition2() || isCondition3();
}
function exectue1_2or3(){
if(isCondition1()){
execute1();
} else if (isCondition2()){
execute2();
...
}
那麼你會重構你的大功能,使用新的功能
if(isCondition1_2_or3()){
execute1_2_or3()
} else if (...
的關鍵是要找到在您的業務領域某種自然分組的代表像上例中的不同條件紅色或圓形或美味的物體意味着物體是蘋果。
但是,如果確實沒有表示不同條件的自然分組。它可能更容易告訴你的圈複雜性檢查器簡單地忽略這個大功能。
說實話,如果你的代碼中有20個if/else情況,你可能做錯了什麼 – Marko