写点什么

重读《重构 2》- 封装记录

用户头像
顿晓
关注
发布于: 2021 年 04 月 19 日
重读《重构2》- 封装记录

6.11 拆分阶段(Split Phase)

这里着重指可以继续划分意图的代码,需要拆分出来。

至此重构最主要的部分已经都讨论过一次。


重构操作中分享几点心得:

1、重构操作讲究行云流水,渐近式,零难度操作,想到即手到;所以避免有一步到位的欲望,增加重构难度;

2、重构是个思考过程,常会有新的发现--对问题有了更好的解决方法;不是已经有了设计的结果,然后把结果做出来;

3、重构能力即解决问题的能力,但这能力主要是后天练习得来,因为需要大量正例、反例给大脑神经网络做深度学习,以此具备重构能力;

4、把重构放入自己的日常工作中,水平会逐渐得到提升;

5、整理自己的成长路径,主动给自己增加难度,但不要增加太多。

7.1 封装记录(Encapsulate Record)

将数据作为有意义的单元传递,而不仅是一堆数 据的拼凑。

如果数据是可变的,用类/对象来封装;如果数据只读则直接使用记录。


使用记录会存在“数据结构不直观”的情况,这种情况下使用类更合适;

因为用来实现的细节和提供功能的意图是 2 个层次的概念,而且很大可能不只是 1v1 的关系,

完成功能的细节存在多种表达方式,如书中的例子:

{start: 1, end: 5} {start: 1, length: 5}

如果用类来表达,就可以统一为 Range 类。

7.2 封装集合(Encapsulate Collection)

封装集合时人们常常犯一个错误:只对集 合变量的访问进行了封装,但依然让取值函数返回 集合本身。这使得集合的成员变量可以直接被修 改,而封装它的类则全然不知,无法介入。


集合的操作已经形成了最佳实践:

1、取值函数返回一个集合的副本

2、使用集合管道 (Collection Pipeline)组合完成需要的操作

3、是否需要单独封装成类,看需求的复杂程度


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

顿晓

关注

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

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

评论

发布
暂无评论
重读《重构2》- 封装记录