最近在工作中遇到一些条件判断的语句, 情景如下:
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%可能性出错的函数那出现一次错误的机率是相当高的!