论坛首页 入门技术论坛

也谈重构

浏览 2507 次
锁定老帖子 主题:也谈重构
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-17   最后修改:2009-05-17

谈到“重构”,大家马上就会想到MF的《重构----改善既有代码的设计》。一年多前,我买了这本书,期间断断续续翻过三次,真正算是研读的也就是一次。确实是一本好书,但是在我看来,很多人并没有理解重构的本质。

什么是重构?“本质上说,重构就是 在代码写好之后改进它的设计”。这是书上的原话。你真的理解这句话嘛?

 

重构的时机:在代码写好之后,在我看来到没必要那么严格。

真正的关键意义在于:“改进软件的设计”。

 

 

看个例子,这是在前几天在JE首页的帖子(忘记具体在哪块了):

 

    当我在读MF的《重构》时产生了这样的疑问。它是否适合?
     这里为了减少争议,我说明一些大概的细节。一个系统在SPRING+STRUTS2+HBIERBATE下,在框架的范围内开发。严格的分层,各层之间使用IOC进行解偶,而且,每一个功能,写一个模块。而且,各各模块之间相对独立,没有父类,子类。最多只是引用一些公共包中的方法(比如:取得当前时间,等等)。在这样的情况下,我感觉使用重构的意义不大,如果为了重构而重构,明显会降低编码的速度和效率。因为我在编码时被打断会显的非常不爽,更别说在编码中进行TDD了。 

 

平时大家在写代码的时候肯定会想:这样的代码好不好?有什么可改进的?这个方法是不是该在这个类里?甚至于用什么模式。这种讨论在论坛、群组、同事之间经常会发生。拿上面的例子,他在写模块,写工具类的时候肯定会有这样的思考。但是一想到重构,脑子里便是:一看就是好书,不过看了为什么没感觉?这100多个技巧怎么记得住啊?什么时候可以用哪个技巧啊?

 

 

当你在想着,怎么改进自己代码的时候,是为了什么?改进软件的设计!!!重构又是为了什么?改进软件的设计!!!很多人一翻开《重构》就像进入了一个“空中花园”,那么多的技巧让你感叹,会花很多时间去理解。可是一合上书,马上又进入了另一片天地,“空中花园”离你是那么遥远,高高在上。

 

 

重构”与你平时对软件做的努力并无本质的区别!他们就是同一个东西。

 

 

将“强大神秘的重构”与我们平时私下讨论的“作坊式的小技巧”相提并论,会令很多人感到诧异。昨天“重构”在我眼前还是那么神秘,面对那100多个技巧我还是那么不知所措。怎么今天这家伙把重构说的那么“轻”?现在有很多关于重构的书,《网站重构:应用Web标准进行设计 》、《数据库重构》、《重构与模式》等等等等,如果你看清重构的本质,那么看书的时候就会是一种享受,不然你就会陷入一种又一种重构技巧的噩梦中。

 

 

我想这也是为什么gigix说,看完这本书之后就完全甩开了这本书,是有道理的。JE上关于重构最好的帖子就是:讨论:重构的前提是不是 TDD大家可以去看看,最关键的是要有自己的认识。

   发表时间:2009-05-19  
使用框架,分层并不能代替设计.同样的ssh,会写烂代码的人照样写出来的东西让人恶心!

我认为一个程序就是自己的一个作品,是一件艺术品,会注入自己的思想,灵魂!
0 请登录后投票
   发表时间:2009-05-19  
很多刚看《重构》的人,都会认为这是高深的学问,很难弄明半,特别是那100多个技巧,根本记不住。

我只是想告诉大家,看了重构以后,要有重构的意识,而不是念着那些技巧,那么你对重构的时机,重构的技巧才会有更深的理解。

如果你把它当成“高深”的学问,和你平时编码完全脱节,反而会照成很多困扰。

我举得那个例子就是最好的证明,很多人看了重构而不知道重构是什么
0 请登录后投票
   发表时间:2009-05-26  
去年年底被迫参与了一个VB.net的CS架构的给人擦屁股的项目,开发进行了一半,没有基本设计,没有详细设计,没有数据库设计,在表现层直接做持久化,这个简直就是垃圾。
我进去就建议说先整理文档,进行MVC分层(算重构吧),不然没办法做,结果就被boss否决了。没办法,硬着头皮上,结果前几天没写一行代码(真的是没有办法写啊),最后被boss以没有责任心,能力不足为由fire了,呵呵。

重构首先要以正确的结构为前提,如果从根就烂了,也就没有重构的必要了。
0 请登录后投票
   发表时间:2009-05-27  
事先的设计和重构关系不大,如果乱起八糟还不如重写,没什么必要重构。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics