《重构与模式》的一些随记

重构、模式和敏捷之间的关系

重构的目的在于消除坏代码,趋于或提取出模式。模式是重构的一个方向,但并不是唯一的方向。应该避免沉迷于模式、导致过度设计。

一般而言,不需要设计阶段就识别出模式。足够即可。通过不断的迭代、重构,寻找合适的模式。这一过程就是迭代、TDD等敏捷方法的最佳反映。

IDE对重构的支持

IDE对重构的支持,是在Fowler的《重构-改善既有代码设计》之后开始的。重构是可以被识别出来并且自动化。重构的低层次是一些简单的重构方法,比如方法上移/下移、提取函数等,这些简单的方法通过组合,可以构成复杂的重构。从而使重构趋于模式,在理论上也是可以得到IDE的支持的。

作者将重构分为简单重构和复合重构。行文的方式也就是通过一系列简单步骤来最终实现模式。给出了步骤,完全可以依葫芦画瓢,但这肯定不是作者的本意。

全局数据结构的罪恶

关于全局数据结构有一句Fowler名言:任何全局数据结构被证明无害之前都是有害的。应该避免沉迷于全局数据结构。使用者不会对使用的对象负责,责任留给下一个使用者。

发散一点讲,单例也是全局数据,也应该慎用。C语言语言级别没有多少限制,很容易变成全局数据结构的罪恶之城。

方法的细节应该处于同一层面

这个问题跟人的认知理解方式有关。对于在同一层面的知识很容易被接受,如果需要不停的在不同深度的层面直接切换,接受非常困难。

特别是对位于较高层次的函数的使用时,很容易让细节散布在各个角落。

这个问题可以通过提取函数,上移/下移简单地完成。

领域知识指导和选择重构

重构是跟领域知识绑定到一起的。因为具体的使用环境才能决定什么是易变的、什么是稳定的、什么是可控的。这些问题的回答都将影响重构。

你可能感兴趣的:(《重构与模式》的一些随记)