写点什么

重读《重构 2》- 以查询取代临时变量

用户头像
顿晓
关注
发布于: 2021 年 04 月 21 日
重读《重构2》- 以查询取代临时变量

7.4 以查询取代临时变量(Replace Temp with Query)

针对可优化的场景:

1、临时变量计算逻辑复杂

2、临时变量计算逻辑多处重复

提炼出的函数往往做为模块内的私有函数,作用范围有限;

需求变化时往往也发生在提炼出的小函数上,方便 code review。

7.5 提炼类(Extract Class)

书中提了 2 个原因:

1、类里面的数据和函数太零散,缺乏封装,可以考虑提炼新的小类;

2、类内出现了 2 个及以上明显的职责,可以考虑拆分。

7.6 内联类(Inline Class)

当类不承担足够责任时,会变成“萎缩类”,或“鸡肋类”;

换句话说,当类的整体不在大于部分之和时,就不再有单独存在的理由。

另一个场景是:重构过程的需要,即先把类内联到上下文中,然后再重新提炼新类。

7.7 隐藏委托关系(Hide Delegate)

把 a.b.c 封装成 a.bc bc() { b.c }

7.8 移除中间人(Remove Middle Man)

当 b 完成成为中间人时,就没必要再封装委托函数,而是直接使用委托类。

也可以混用,比如按照委托的使用频率,高频的使用委托函数,低频的直接使用委托类。

7.9 替换算法(Substitute Algorithm)

其实就是替换实现。当有多个选择时,不确定哪个更好,就把这些选择做成可替换的,对调用者透明。

如引入第三方库时,如果不是业界公认最好的,就最好再封装一层,留给以后替换的机会。

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

顿晓

关注

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

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

评论

发布
暂无评论
重读《重构2》- 以查询取代临时变量