重构,简化条件表达式

[align=center][size=xx-small][b]重构,简化条件表达式[/b][/size][/align]
重构一书,早就在手,只是一直没有细细品味,对于堪称经典之书,除了瞻仰之外,不敢评论,但是这本书确实通俗易懂,利用小的改动,让你的代码逻辑更清晰,可阅读行更高等。

重构的工作是建立在有良好测试环境的基础上进行,没有测试做保障,如何才能知道自己的重构不会改变程序原来的逻辑,单元测试是重构的基础,目前我用的是gtest单元测试框架。


本文记录简化条件表达式重构方法:

1.分解条件表达式

从if、then、else中三个段落中提炼独立函数。

if(date.before(SUMMER_START) || date.after(SUMMER_END)) {
charge = quantity * _winterRate + _winterServiceChange;
}else charge = quantity * _summerRate;


经过提炼之后:

if(notSummer(date)) {
charge = winterCharge(quantity);
else charge = summerCharge(quantity);


针对重构前和重构后,可以看出,重构后的可读性更高,不至于如重构前看到if语句里的表达式要思考一会才会明白,这种小的提炼积少成多,对整个代码的风格和代码的可读性带来巨大的改变。

2.合并表达式

当一连串条件检查:检查条件各不相同,但是结果却是一样,此时,就应该用“&&”、“||”将他们合并为一个条件表达式。


double disabilityAmount() {
if(_seniority < 2) return 0;
if(_monthsDisabled > 12) return 0;
if(_isPartTime) return 0;


重构后:

double disabilityAmount() {
if(isNotEligibleForDiasbility()) return 0;



3. 合并重复的条件片段

在条件表达式的每一个分支上有着相同的一段代码,这是就要注意把他们移到条件表达式之外。


if(isSpecialDeal()) {
total = price * 0.95;
send();
else
total = price * 0.98;
send();


重构后:


if(isSpecialDeal()) {
total = price * 0.95;
else
total = price * 0.98;
send();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值