首页 > 其他 > 详细

重构 - 重组方法

时间:2016-03-08 00:19:32      阅读:201      评论:0      收藏:0      [点我收藏+]

抽方法 (Extract Method)

问题

一坨代码理不清

分组,然后把一组代码移动到新的方法中

重构的必要性

行数越多,越难懂

收益

易懂,方法名代替了注释

减少重复

隔离的代码,更少出错


内联方法 (Inline Method )

问题

方法体比方法本身更直观

直接用方法体替换方法

重构的必要性

方法仅仅是一个委托

重构过程使得一个方法越来越短小,失去了存在的必要性。

收益

 


抽变量(Extract variable)

问题

某个表达式不好懂或者需要注释

把表达式的值赋值给一个变量,变量的名字解释表达式

重构的必要性

增加了代码的可读性,当然复杂性也提高了,注意权衡。

收益


内联临时变量 (Inline Temp)

问题

 一个临时变量只被用到一次,且对其赋值的表达式也足够易懂 。 

 

重构的必要性

 

收益


替换临时变量为查询(Replace Temp with query)

问题

 用一个临时变量保存表达式的结果供后续使用。但在多个方法中都重复这个代码。 

 把表达式抽成一个方法。替换所有使用变量的地方。换句话说,还是抽方法。

重构的必要性

 抽一个变量和抽一个方法都有为表达式注释的功能。显然抽方法可以被多个方法调用,减少了重复代码。 

收益

不适用:

如果临时变量为了 cache 一个复杂计算的结果,那变为查询或 inline 临时变量显然不是好主意。 


切割临时变量(split temporary variable)

问题

 一个临时变量用以保存若干个表达式的中间值;

 使用不同的变量保存不同的值。 

重构的必要性

这样的代码会阻碍你对代码做出改变。

收益

一个元素只做一件事,可以大大提高可维护性。

 


删除对参数的赋值 (Remove assianments to parameters)

问题

 给方法的参数赋值,和把一个变量多次赋值一样,是代码改变的阻力

 使用本地变量代替参数

重构的必要性

 

收益


替换方法为对象( replace method with method object)

问题

 方法有大量彼此相关的本地变量,是的抽方法变得困难或者难堪-因为参数列表会变得很长!

 新建一个类来提供这个方法,这样可以把临时变量转化成字段,这样就可以容易的把方法分割成多个。

重构的必要性

 通过添加一个额外的类分治问题,并且为进一步抽方法提供了可能性。 

收益

这个问题分治也可以通过工具类,但工具类仍然无法分治这些堆在一起的参数。而显然,引入方法对象则更明智。

 

缺点:

像抽方法,抽变量一样,带来了复杂性,所以要权衡。

 


替换算法 (Substitute algorithm)

问题

有更好的算法 

 

重构的必要性

 

收益

重构 - 重组方法

原文:http://www.cnblogs.com/yoogo/p/5252442.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!