写点什么

重读《重构 2》- 内联函数

用户头像
顿晓
关注
发布于: 2021 年 04 月 13 日
重读《重构2》- 内联函数

6.2 内联函数(Inline Function)

书上说是 提取函数的反向操作,其实我觉得为了降低大脑思考负载,可以把这条合并到提取函数中。

因为内联函数 就是 提取函数有问题时才会操作的,即提取函数的 反例情况。


至于书中花了大量篇幅讲的操作步骤,是属于“术”的部分,有炫技的成分,大家可以参考。

我的建议是:

如果你之前不是那样操作的,即还未形成该习惯,则不要强迫自己去练习;

或者说,不要在没有深刻理解这些操作背后意义的情况下,去做纯练习;

正确的方法是:

1、先深刻理解该操作的目的、意义;在大脑中形成概念;

2、碰到问题可以使用该方法时,按照自己的理解去操作;

3、等自己操作成功多次后,再来参考书中给出的操作步骤,和自己的步骤进行对比学习,找出其中可以改进的地方,也有可能发现--自己的步骤更优。


目的不是掌握方法,而是掌握使用方法的方法--即策略。

但我们的教育大部分是:只教方法,然后自己去经历失败,然后悟出策略。

方法是不会变的,对每个人都一样;但大家自己悟的策略,则每个人都不同,所以表现出来,大家使用方法的方法都有差别。

所以,我们需要学习策略,让大家的策略都保持一样,都达到相同的认知,这样把一个问题交给团队里任何一个人,做出的结果都是一样的。


回到今天主题:提取函数容易出错的地方

换句话说,提取函数是为了增加代码的层次感,也就是“代码层次感的充分条件”

1、秒懂/零秒思考,这是终极目标,但起码做到易懂,否则可以考虑 提取函数,用意图命名函数;

2、整齐,把不整齐的提取出去

3、简单,最好一个函数就一个逻辑,把其他逻辑提取出去;函数内的所有元素都直接服务于函数名。


举个例子:如何提取?

fn load_config() {
f = open("test");
content = f.read();
parse(content);
...}
复制代码


这样就很好:open 在这里是多余的,是应该隐藏起来的细节。

fn load_config() {
content = read_file("test");
parse(content);
...}
复制代码


尤其 java 里的,有 read, input-stream,readbuf, 都是需要从业务代码中提取出来的。

发布于: 2021 年 04 月 13 日阅读数: 25
用户头像

顿晓

关注

因观黑白愕然悟,顿晓三百六十路。 2017.10.17 加入

视频号「编程日课」 知识星球「俺的死党顶」

评论

发布
暂无评论
重读《重构2》- 内联函数