也谈重构
谈到“重构”,大家马上就会想到MF的《重构----改善既有代码的设计》。一年多前,我买了这本书,期间断断续续翻过三次,真正算是研读的也就是一次。确实是一本好书,但是在我看来,很多人并没有理解重构的本质。
什么是重构?“本质上说,重构就是?在代码写好之后改进它的设计”。这是书上的原话。你真的理解这句话嘛?
?
重构的时机:在代码写好之后,在我看来到没必要那么严格。
真正的关键意义在于:“改进软件的设计”。
?
?
看个例子,这是在前几天在JE首页的帖子(忘记具体在哪块了):
? 平时大家在写代码的时候肯定会想:这样的代码好不好?有什么可改进的?这个方法是不是该在这个类里?甚至于用什么模式。这种讨论在论坛、群组、同事之间经常会发生。拿上面的例子,他在写模块,写工具类的时候肯定会有这样的思考。但是一想到重构,脑子里便是:一看就是好书,不过看了为什么没感觉?这100多个技巧怎么记得住啊?什么时候可以用哪个技巧啊?
?
?
当你在想着,怎么改进自己代码的时候,是为了什么?改进软件的设计!!!重构又是为了什么?改进软件的设计!!!很多人一翻开《重构》就像进入了一个“空中花园”,那么多的技巧让你感叹,会花很多时间去理解。可是一合上书,马上又进入了另一片天地,“空中花园”离你是那么遥远,高高在上。
?
?
“重构”与你平时对软件做的努力并无本质的区别!他们就是同一个东西。
?
?
将“强大神秘的重构”与我们平时私下讨论的“作坊式的小技巧”相提并论,会令很多人感到诧异。昨天“重构”在我眼前还是那么神秘,面对那100多个技巧我还是那么不知所措。怎么今天这家伙把重构说的那么“轻”?现在有很多关于重构的书,《网站重构:应用Web标准进行设计?》、《数据库重构》、《重构与模式》等等等等,如果你看清重构的本质,那么看书的时候就会是一种享受,不然你就会陷入一种又一种重构技巧的噩梦中。
?
?
我想这也是为什么gigix说,看完这本书之后就完全甩开了这本书,是有道理的。JE上关于重构最好的帖子就是:讨论:重构的前提是不是?TDD。大家可以去看看,最关键的是要有自己的认识。
3 楼 tifayuki 2009-05-26 去年年底被迫参与了一个VB.net的CS架构的给人擦屁股的项目,开发进行了一半,没有基本设计,没有详细设计,没有数据库设计,在表现层直接做持久化,这个简直就是垃圾。