也谈重构

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

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

 

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

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

 

 

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

 

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

 

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

 

 

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

 

 

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

 

 

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

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值