写代码,一定要对自己写的(维护的)每一行代码都进行深入的研究。写程序本来就是一个很细致的活儿,粗心大意和自以为是的猜测都是在给后人或自己挖坑。
简单的一个布尔值装箱,都有可能是bug的根源。
Code review的时候,发现一段代码如下:
Boolean isNeedProxy = (Boolean)threadLocalMap.get(ip);
return ( isNeedProxy == Boolean.TRUE ) ? true : false;
我的猜想是编程的人为了防止isNeedProxy为null,所以有了这段代码。
这里有个问题。如果存储的值是new出来的Boolean,那么这里的逻辑就是错的。
Boolean b = new Boolean("true");
Assert.assertFalse(b == Boolean.TRUE);
发现了这个问题,改正起来当然是比较容易的。
return isNeedProxy==null?false:isNeedProxy;
本来故事到了这里就结束了,但是,仔细想想,对于这种比较细微的代码级别问题,别人一样是很容易犯错的。还是应该把这个细微的东西封装起来比较好。
代码如下:
private Map<String, Boolean> map = new HashMap<String, Boolean>();
public void put(String key, boolean value) {
map.put(key, value);
}
public boolean getValue(String key) {
Boolean value = map.get(key);
if (value == null) {
return false;
}
return value.booleanValue();
}
分享到:
相关推荐
重构——改善既有代码设计,经典文档,架构师必须教程
重构__改善既有代码的设计_高清 绝对清晰
重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计
对经验模态分解后的各分量IMF进行重构代码,函数可直接调用。
重构_改善既有代码的设计(中文版)重构_改善既有代码的设计(中文版)重构_改善既有代码的设计(中文版)重构_改善既有代码的设计(中文版)
用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构_源码.rar.rar
书中给出了70 多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。《重构 改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。
书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。《重构:改善既...
重构_改善既有的代码的设计,很实用的一本书。任何开发语言的人都能看!
资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构,实现故障诊断 源码说明: 全部项目源码都是经过...
配电网重构是一个多目标、多时段、多组合、多约束的非线性优化问题。该问题的复杂性,决定了难以用单纯的数学方法得到满意的解。尝试用改进的遗传算法进行配电网络重构,建立评价函数,寻求该评价函数最优解
重构_改善既有代码的设计重构_改善既有代码的设计重构_改善既有代码的设计重构_改善既有代码的设计重构_改善既有代码的设计
经典重构书籍,以Java语言为基础编写,讲解了重构的意义,介绍了多种重构方法。