【1】原代碼函數
1 double GetPayAmount() 2 { 3 double result; 4 if (IsDead()) 5 { 6 result = DeadAmount(); 7 } 8 else 9 { 10 if (IsSeparated()) 11 { 12 result = SeparatedAmount(); 13 } 14 else 15 { 16 if (IsRetired()) 17 { 18 result = RetiredPayAmount(); 19 } 20 else 21 { 22 result = NormalPayAmount(); 23 } 24 } 25 } 26 27 return result; 28 }
【2】以衛語句取代嵌套條件式spa
1 double getPayAmount() 2 { 3 if (isDead()) 4 { 5 return deadPayAmount(); 6 } 7 if (isSeparated()) 8 { 9 return separatedPayAmount(); 10 } 11 if (isRetired()) 12 { 13 return retiredPayAmount(); 14 } 15 16 return normalPayAmount(); 17 }
【3】總結code
函數中的條件邏輯令人難以看清正常的分支執行路徑。使用衛語句表現全部特殊狀況。orm
所謂衛語句,若是某個條件極其罕見,就應該單獨檢查該條件,並在該條件爲真時馬上從函數中返回。這樣的單獨檢查經常被稱爲「衛語句」。blog
Good Good Study, Day Day Upget
順序 選擇 循環 總結class