java代码重构.doc
文本预览下载声明
1、命名规范问题:需严格按java命名规范来,下图中OrderBO类名需改成OrderBo 引用需定义成 orderBo
变量不要定义在循环体内
理解:首先变量的声明是在栈中进行的在外面的定义的变量,只在栈中声明了一次在里面的定义的变量,循环多少次就在栈中声明了多少次在内存或说资源节省方面肯定是在外面定义较好,是摧荐的写法
修改方案:将以上截图中标注的变量定义在for循环体外。
要避免对参数赋值:对参数赋值会导致其他地方引用改参数时数据与原始参数数据不一致。
直接给参数赋值的影响:如下图:
对比图:
我们项目中的例子:
修改方案:
不使用魔法数:所谓的魔法数是指在代码中直接出现的数值,只有在这个数值计数的那部分代码中才能明确了解其含义。
如项目中:
修改方案:
去除没有意义的代码:如下图中for 循环体内可以去除元素对象是否为空的
能抽取出来的尽量抽取出来:
如下面截图中的方法重新给参数赋值这个操作我们可以抽取独立的方法。
修改方案:
抽取组装参数的方法:
原方法调用组装参数的方法
逻辑复杂度不超过8:如果一个模块有e条边e个节点时它的圈复杂度为v(G)=e-n+2
下面代码的逻辑复杂度已经达到10
解决方案:提炼函数法
提炼部分
分解后
8、一次只做一件事情:下面方法做的事情太多了,我们需要给他瘦瘦身
解决方案:把该方法中做能独立操作独立出来
(1)
(2)
(3)
抽取后
尽量不适用逻辑非:
其优点:可以及早结束非正常逻辑
例子:
(1)重构前:
重构后
项目中的代码:
修改方案:
显示全部