重构方法概要

重构方法概要

提炼函数
目的:将实现独立功能的代码提取到单独的函数中,目的是“将意图与实现分开”,从用途的角度来抽取代码,并对函数进行适当的命名,能够使人明确地理解其含义。

注意:如果某个变量在提炼函数外被初始化并在函数内被赋值,那就将初始化语句也迁到提炼函数中。如果某个变量按值传递给提炼出的函数并在这个函数内被赋值,这样的变量又分为两种情况,如果这个变量只在函数内部被使用,那么可以将该变量抽取成临时变量,如果这个变量在其它地方也会被使用,那么最好把这个变量作为返回值;如果这样的变量太多,可以暂时先不提炼,或者使用“拆分变量”或者“以查询取代临时变量”来进行重构。

内联函数
目的:去掉非必要的间接函数,用函数里的语句取代原来的函数调用。是提炼函数的反向操作。

提炼变量
目的:将难以理解的表达式提取成变量,给它合适的命名,更容易理解其作用。如果一个类里有一些这样的表达式,并且这些表达式的概念适用于整个类,那么可以将这些表达式提炼成方法而不是变量,以便后续其它变量使用。

内联变量
目的:表达式本身含义已经足够清晰时,可以通过内联的方式去掉变量,是提炼变量的反向操作。

改变函数声明
目的:包括给函数改名和修改参数列表两种操作,函数改名能使其他人更好地理解它的作用,修改参数列表的目的是使函数能够更好地扩展。

修改函数参数:比如函数参数传入了一个对象,但其实我只需要对象的其中一个属性,那么可以修改函数参数为这个属性,并修改所有使用它的地方。

封装变量
目的:如果想要搬移一处被广泛使用的数据,最好的办法是先以函数形式封装所有对该数据的访问。方法是创建封装函数,在其中访问和给变量赋值。

变量改名
目的:好的变量名能够使人清晰地理解其作用。如果有很多地方读取或者更新该变量的值,可以运用封装变量的方式,利用set和get方法赋值和获取变量。

引入参数对象
目的:有一组数据总是同时出现,因为它们可能互相关联,这样的数据就是数据泥团。为了消除这样的数据泥团,可以将这些数据组织成结构,使数据间的关系变得清晰,参数的访问也会更一致。

函数组合成类
目的:如果一组函数经常操作同一块数据,那么它们可能是作用域同一个功能,可以将这些函数提取成类。类能给这些函数提供一个公用的环境,简化函数间的相互调用。类产生的派生数据都聚拢在一处,避免到处重复。

函数组合成变换
目的:是函数组合成类的另一种替代方案,如果在代码中需要对派生数据做更新,那么使用类更好,否则可以使用函数组合变换。

拆分阶段
目的:一段代码在同时处理两件不同的事,需要把它们拆分成各自独立的模块。引入中转数据结构,两个阶段都用到的参数可以提炼到中转数据结构中。

例子待补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值