每当看到代码中有一个明显的冗余的时候,我就有一个感慨,这家伙时间真多啊,放个屁还要脱裤子。
看例子。
其中StringUtil是一个null safe的方法,HK,MACAO,TAIWAN都是常量定义,后面明明有判断相等的逻辑,偏偏要在前面做一个null检查,真是多此一举。
直接去掉不是挺好的吗?
同时,从这里使用常量的方式可以推测,有可能其他地方也有基于比较的用法。代码文件往下一拉,果不其然。
两处放在一起考虑,使用map来存储addressCode和地址描述字符串就是一个水到渠成的事情了。
第一处的代码可以改为:
第二处的代码可以改为:
当然,这里addressCode对应的描述信息应该从配置文件里面读取比较好。但是由于不是本文关注的重点,不赘述。
看例子。
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对应的描述信息应该从配置文件里面读取比较好。但是由于不是本文关注的重点,不赘述。