重读《重构 2》- 内联函数
6.2 内联函数(Inline Function)
书上说是 提取函数的反向操作,其实我觉得为了降低大脑思考负载,可以把这条合并到提取函数中。
因为内联函数 就是 提取函数有问题时才会操作的,即提取函数的 反例情况。
至于书中花了大量篇幅讲的操作步骤,是属于“术”的部分,有炫技的成分,大家可以参考。
我的建议是:
如果你之前不是那样操作的,即还未形成该习惯,则不要强迫自己去练习;
或者说,不要在没有深刻理解这些操作背后意义的情况下,去做纯练习;
正确的方法是:
1、先深刻理解该操作的目的、意义;在大脑中形成概念;
2、碰到问题可以使用该方法时,按照自己的理解去操作;
3、等自己操作成功多次后,再来参考书中给出的操作步骤,和自己的步骤进行对比学习,找出其中可以改进的地方,也有可能发现--自己的步骤更优。
目的不是掌握方法,而是掌握使用方法的方法--即策略。
但我们的教育大部分是:只教方法,然后自己去经历失败,然后悟出策略。
方法是不会变的,对每个人都一样;但大家自己悟的策略,则每个人都不同,所以表现出来,大家使用方法的方法都有差别。
所以,我们需要学习策略,让大家的策略都保持一样,都达到相同的认知,这样把一个问题交给团队里任何一个人,做出的结果都是一样的。
回到今天主题:提取函数容易出错的地方
换句话说,提取函数是为了增加代码的层次感,也就是“代码层次感的充分条件”
1、秒懂/零秒思考,这是终极目标,但起码做到易懂,否则可以考虑 提取函数,用意图命名函数;
2、整齐,把不整齐的提取出去
3、简单,最好一个函数就一个逻辑,把其他逻辑提取出去;函数内的所有元素都直接服务于函数名。
举个例子:如何提取?
这样就很好:open 在这里是多余的,是应该隐藏起来的细节。
尤其 java 里的,有 read, input-stream,readbuf, 都是需要从业务代码中提取出来的。
版权声明: 本文为 InfoQ 作者【顿晓】的原创文章。
原文链接:【http://xie.infoq.cn/article/5bce5f00cb52124e414e91295】。文章转载请联系作者。
评论