对于重构,我们每个人都在谈论。我不知道重构对于我们日常的编写代码有多么大的影响,我也说不出重构在我们日常的coding 中能占多少分量。
Martin Fowler 曾在他的书中指出重构的概念:...在不改变代码外在行为的前提下对代码做出修改,以改进代码的内部结构的过程。
这个定义说的再简单不过了。每次写完一段代码——不管它庞大也好,简单也好,做出修改的机会少之又少,好不容易实现的功能,能用就可以了,改——还是算了吧!
最近一直再看别人写的代码,不是没有注释,就是注释少得可怜;如果代码段清晰也就罢了,偏偏凌乱不堪。还有的高手为了展示自己水平,简简单单的 数据库操作,偏偏要用反射来处理。
敏捷开发一书中提到了软件模块应该具有三项职责:
1。 它运行起来必须完成一定的功能,这也是该模块得以存在的原因;
2。 它要应对变化,我们有责任保证这种改变应该尽可能的简单;
3。 要能和阅读它的人进行沟通。
有人说重构是为了复用,这么说不是没有道理的。一个清晰,干净的模块不会因为你随意的搬动它而支离破碎。就算是copy,也会简简单单。
更为重要的是,我们不但要和程序交流,程序也要和我们交流,这种交流应该简单。只有简单才能让它方便迅速的传播开来。
因此,我们应该花一些时间来思考一下我们是不是需要重构,更甚者,我们是不是应该重构。