实践中的重构19_脱裤子放屁

每当看到代码中有一个明显的冗余的时候,我就有一个感慨,这家伙时间真多啊,放个屁还要脱裤子。
看例子。
		if (addressCode != null
&& (StringUtil.equals(addressCode, HK)
|| StringUtil.equals(addressCode, MACAO)
|| StringUtil.equals(addressCode, TAIWAN) || StringUtil
.equals(addressCode, OTHER))) {
// do something.
} else {
// do something.
}

其中StringUtil是一个null safe的方法,HK,MACAO,TAIWAN都是常量定义,后面明明有判断相等的逻辑,偏偏要在前面做一个null检查,真是多此一举。
		if (StringUtil.equals(addressCode, HK)
|| StringUtil.equals(addressCode, MACAO)
|| StringUtil.equals(addressCode, TAIWAN)
|| StringUtil.equals(addressCode, OTHER)) {
// do something.
} else {
// do something.
}

直接去掉不是挺好的吗?
同时,从这里使用常量的方式可以推测,有可能其他地方也有基于比较的用法。代码文件往下一拉,果不其然。
		if (StringUtil.equals(addressCode, HK)) {
return "中国香港";
}
if (StringUtil.equals(addressCode, MACAO)) {
return "中国澳门";
}
if (StringUtil.equals(addressCode, TAIWAN)) {
return "中国台湾";
}
if (StringUtil.equals(addressCode, OTHER)) {
return "其它国家/地区";
}

两处放在一起考虑,使用map来存储addressCode和地址描述字符串就是一个水到渠成的事情了。
第一处的代码可以改为:
		if (addressMap.containsKey(addressCode)) {
// do something.
} else {
// do something.
}

第二处的代码可以改为:
		if (addressMap.containsKey(addressCode)) {
return addressMap.get(addressCode);
}

当然,这里addressCode对应的描述信息应该从配置文件里面读取比较好。但是由于不是本文关注的重点,不赘述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值