重读《重构 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)
其实就是替换实现。当有多个选择时,不确定哪个更好,就把这些选择做成可替换的,对调用者透明。
如引入第三方库时,如果不是业界公认最好的,就最好再封装一层,留给以后替换的机会。
版权声明: 本文为 InfoQ 作者【顿晓】的原创文章。
原文链接:【http://xie.infoq.cn/article/37b24dbbc7568c20c8f21ebea】。文章转载请联系作者。
评论