3.2long method

每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。哪怕替换后的函数调用动作比函数自身还长,只要函数名称能够解释其用途,我们也毫不犹豫地那么做。关键不在于函数的长度,而在于函数“做什么”和“如何做”之间的语义距离。

如果函数内有大量的参数和临时变量,它们会对你的函数提炼形成阻碍。如果尝试使用extract method,会把许多参数和临时变量当作参数,传递给被提炼出来的新函数,导致可读性几乎没有任何提升。此时,可以运用,replace temp with query消除临时元素。introduce parameter object和preserve whole object则可以将过长的参数列变得更简洁一些。

如果仍然有太多的临时变量和参数,就该使用replace method with method object。

如何确定该提炼那一段代码,一个很好的技巧是:寻找注释。它们通常能指出代码用途和实现手法之间的语义距离。如果代码前方有一行注释,就是在提醒你:可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。就算只有一行代码,如果它需要以注释来说明,那也值得将它提炼到独立函数去。

条件表达式和循环常常也是提炼的新号。你可以使用decompose conditional处理条件表达式。至于循环,你应该将循环和其内的代码提炼到一个独立函数中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值