Composing Methods

本文介绍了软件重构中的关键技巧,如ExtractMethod、InlineMethod等,帮助开发者优化代码结构,提升代码可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Extract Method
这个不难,用eclipse就可以解决大部分问题。需要注意的有几点:
1.有局部变量的情况,要作为参数传入目标函数
2.对局部变量再赋值,要将新值作为目标函数的返回值
3.如果目标函数需要返回多个值,则把它拆开,确保一个函数返回一个值

Inline Method
和Extract Method相反,在以下几种情况使用:
1.函数体极少(一行?),而且与函数名一样清晰易懂
2.有一堆组织不合理的小函数,需要inline到一个大函数中,然后在Extract Method
3.无用的间接层

Inline Temp
作为Replace Temp with Query的一部分使用,把对无用临时变量的赋值去除

Replace Temp with Query
太多的临时变量会造成无法Extract Method(原因应该是参数太多),所以这个步骤可能是在Extract Method前必不可少的。前提是临时变量只被赋值一次。如果赋值了多次,就用Split Temporary Variable或Separate Query from Modifier,确保它被赋值一次。

Introduce Explaining Variable
一个表达式可能很长,很难读懂。这时候引入用于解释的临时变量。在较长的算法中,也可以引入临时变量解释每一步的意义。注意:如果可以用Extract Method就不用Introduce Explaining Variable。仅当Extract Method难以进行时用。

Split Temporary Variable
一个临时变量只能承担一个责任。如果承担了多个责任,则需要引入另外的临时变量达到这个要求。

Remove Assignments to Parameters
与Split Temporary Variable类似,参数只表示“被传递进来的东西”。对参数赋值不会改变原引用的内容,只会使程序更加混乱。修改方法是给参数加final,但是一般情况下不必把所有参数都强制加final。

Replace Method with Method Object
当一个大型函数无法Extract Method时,可以尝试这种方法。主要原则是把大型函数中所有的临时变量都作为field放入一个新的class中。由于field可以被所有method使用,所以可以在该class内顺利的进行Extract Method,而不用在方法间传递参数。引入一个class,只包含一个函数,并通过构造函数把所有的参数传入,并赋值到field中。原先的函数仅起到一个delegate的作用。

Substitute Algorithm
这个方法让我匪夷所思,感觉就是不改变函数的任何外部行为的情况下,修改函数的内部实现。感觉叫替换函数的实现方式好像更准确些。对于这个重构方法,单元测试至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值