《重构》王者归来

 

Martin Fowler的《重构》英文版出版于1999年。这些年来,有关重构、修改和处理已有代码的图书也出版过不少,包括也非常优秀而深入的《重构与模式》 、《重构HTML》 、《反模式》 、《数据库重构》 等。但是提起重构,人们第一个想到的,还是这本书。

 

刚才看了看它的Amazon排名,5980,估计了一下,计算机图书里估计还能排在几百,领先于绝大部分新书。显然,它经受住了时间的考验,成为毋庸置疑的软件开发经典著作。

 

这书的中文版最初是我引进的,当年甚至还自己动手翻译过一点。想想已经是十年前的事情了。斗转星移,中文出版权易手图灵,它再次与我相遇,令人感慨。

 

书的译者还是熊节,以前侯捷曾经署名在前,但据我所知,其实翻译工作基本上都是熊节独立完成的。

 

将熊节为图灵再版本的写的序转贴于下。多年之后,他也从一个光荣的大学辍学少年(步乔布斯、盖茨后尘?)成长为ThoughtWorks的资深咨询师,Martin Fowler的同事。

 

时间,才是最神奇的重构工具。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


重构的重新认识 

(再版序)

 

光阴荏苒,从当年译完这本《重构》,到如今重新整理译稿,不知不觉已经过去六年了。六年来,在各种大型系统中进行重构和指导别人重构,一直是我的一项工作。对于这本早已烂熟于心的书,也有了一些新的认识。 


不得不遗憾地说,尽管“重构”已经成了常用词汇,但重构技术并没有像我当初乐观认为的那样“变得像空气与水一样普通”。一方面,一种甚嚣尘上的观点认为只要掌握重构的思想就足够了,没必要记住那些详细琐碎的重构手法;另一方面,倒是有很多人高擎“重构”大旗,刀劈斧砍进行着令人触目惊心的大胆修改——有些干脆就是在重做整个系统。 


这些人常常忘了一个最基本的定义:重构是在不改变软件可观察行为的前提下改善其内部结构。当你面对一个最需要重构的遗留系统时,其规模之大、历史之久、代码质量之差,常会使得添加单元测试或者理解其逻辑都成为不可能的任务。此时你唯一能依靠的就是那些已经被证明是行为保持的重构手法:用绝对安全的手法从焦油坑中整理出可测试的接口,给它添加测试,以此作为继续重构的立足点。 


六年来,在各种语言、各种行业、各种软件形态,包括规模达到上百万行代码的项目中进行重构的经验让我明白,“不改变软件行为”只是重构的最基本要求。要想真正让重构技术发挥威力,就必须做到“不需了解软件行为”——听起来很荒谬,但事实如此。如果一段代码能让你容易了解其行为,说明它还不是那么迫切需要被重构。那些最需要重构的代码,你只能看到其中的“坏味道”,接着选择对应的重构手法来消除这些“坏味道”,然后才有可能理解它的行为。而这整个过程之所以可行,全赖你在脑子里记录着一份“坏味道”与重构手法的对应表。 

而且,尽管Java和.NET的自动化重构工具已经相当成熟,但另一些重要的面向对象语言(C++、Ruby、Python……)还远未享受到这样的便利。在重构这些语言编写的程序时,我们仍然必须遵循这些看似琐碎的做法指导(加上语言特有的细节调整),按部就班地进行——如果你还想以安全的方式重构的话。 


所以,仅仅掌握思想是没用的。如果把重构比作一门功夫的话,它的威力全都来自日积月累的勤学苦练。记住所有的“坏味道”,记住它们对应的重构手法,记住常见的重构步骤,然后你才可能有信心面对各种复杂情况——学会所有的招式,才可能“无招胜有招”。我知道这听起来很难,但我也知道这并不像你想象的那么难。你所需要的只是耐心、毅力和不断重读这本书。 


熊节 
2009年10月21日

 

 

 

 

 

你可能感兴趣的:(图灵消息)