《重构:改善既有代码的设计》中提到过很多重构方法,关于简化条件表达式的方法有8种。本文介绍:
合并条件表达式 consolidate conditional expression
- 名称:合并条件表达式 consolidate conditional expression
- 概要:一系列条件测试,都得到相同结果。将这些测试合并为一个条件表达式,并将这个条件表达式提炼成为一个独立函数
- 动机: 一串条件检查各不相同,最终行为却一致。如果发现这种情况,就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。
- 做法:
- 确定这些条件语句都没有副作用
- 使用适当的逻辑操作符,将一系列相关条件表达式合并为一个
- 编译,测试
- 对合并后的条件表达式实施extract method
- 代码演示
修改之前的代码:
double SimplifyConditional::disabilityAmount()
{
if (m_seniority < 2)
return 0;
if (m_monthsDisabled >12)
return 0;
if (m_isPartTime)
return 0;
//compute the disability amount
return 1;
}
double SimplifyConditional::calcCommission()
{
if (onVacation())
{
if (lengthOfService() > 10)
return 1;
}