最近在工作中遇到一些條件判斷的語句, 情景如下:
1. 使用者輸入的聚合統計方式隻能允許兩種情況, MAX(...)和MIN(...)
2. 輸入解釋子產品根據情況把前面的四個字元截取下來然後進行比較比對 記為strSummaryWay
我看到這段程式這麼處理:
if ( summaryWay == 'MAX(' )
按求最大值處理;
else
按求最小值處理;
很明顯,這是一個不完備的判斷表達方式. 沒有考慮到輸入的情況可能是MAX和MIN以外的其他情況, 而就想當然的以為不是MAX就是MIN. 修改以後的處理方式應該為:
if ( strSummaryWay == 'MAX(' )
按求最大值處理;
else if ( strSummaryWay == 'MIN(' )
按求最小值處理;
else
傳回錯誤或者抛出異常(根據程式需要);
從這一個簡單的處理方式, 我也警醒自己,
1. 要對判斷處理做到完備性考慮.
2. 具體對于if-else條件判斷, 如果不是非此即彼的關系, 把最後一個else用來處理異常的情況.
3. 一個函數中如果有1%的可能性出錯誤,那要執行10次, 20次類似的都是1%可能性出錯的函數那出現一次錯誤的機率是相當高的!