代码重构

标签: 代码重构 | 发表时间:2012-10-27 10:02 | 作者:
出处:http://www.iteye.com

随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码。这一过程非常自然。代码需要演化;它不是静态的事物。

 

重写、重做和重新架构代码合起来,称为重构。

 

   当你遇到绊脚石  ---  代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西  -------- 

 

不要对改动犹豫不决。应该现在就做。如果代码具备以下特征,你都应该考虑重构代码:

 

1. 重复。 你发现了对DRY原则的违反。

 

 

2.非正交的设计 。 你发现有些代码或设计可以变得更为正交。

 

 

3.过时的知识。 事情变了,需求转移了,你对问题的了解加深了 。 代码需要跟上这些变化。

 

 

4.性能。 为改善性能,你必须把功能从系统的一个区域转移到另一个区域。

 

 

  重构你的代码 --------- 四处移动工能,更新先前的决策,事实上市痛苦管理的一次练习。让我们面对它,四处改动源码

 

可能相当痛苦:它几乎已经在工作,现在事实上却要被撕毁了。许多开发者不愿意,只是因为代码不完全正确就撕毁了代码。

 

 

但是在现实的工作中,时间压力常常被用作不进行重构的借口。但这个借口并不成立:现在没能进行重构,沿途修正问题将

 

需要投入多得多的时间,那是将需要考虑更多的依赖关系。我们会有更多的时间可用吗。我想应该没有。

 

我们可用用医学上的比喻来向老板解释这一原则:把需要重构的代码当做一个"肿瘤"。切除它需要进行侵入性的外科手术

 

你现在可用手术,趁它还小的时候把它取出。你也可以等它增大扩散 ------- 但那是再切除它就会更昂贵、更危险。等得久

一点,“病人” 就可能会丧命。

 

 

 

怎样就行重构

 

 

就其重构的核心而言,重构就是重新设计。你或你们团队的其他人设计的任何东西可以根据新的事实、更深的理解、变化

 

需求、等等,重新进行设计。但如果你无节制的撕毁大量代码,你可能会发现自己处在比一开始更糟的位置上。

 

 

 

重构是一项需要慎重、深思熟虑、小心进行的活动。关于怎样进行利大于弊的重构, Martin Fowler 给出了以下提示。

 

 

1.不要试图在重构的同时增加工能。

 

 

2. 在开始重构之前,确保你拥有良好的测试。尽可能经常运行这些测试。这样,如果你改动破坏了任何东西,你就能很快知道。

 

 

3.采取短少、深思熟虑的步骤:把某个字段从一个类移往另一个,把两个类似的方法融合进超类中。重构常常涉及到进行许

 

多局部改动 ,继而产生更大规模的改动。如果你使你的步骤保持短小,并在每个步骤后进行测试,你将能够避免长时间

 

的调试。

 

确保对模块做出剧烈的改动, 比如以一种不兼容的方式更改了其接口或功能,会破坏构建,这也很有帮助。也就是说,这

 

些代码的客户应该无法通过编译。于是你可以很快找到这些老客户,并做出必要的改动,让他们及时更新。

 

 

所以,下次你看到不怎么合理代码是,即要修正它,也要修正依赖它的每样东西。要管理痛苦:如果它现在有损害,但以后

 

的损害会更大,你也许最好一劳永逸地修正它。不要容忍破窗户。

 

以上是<<程序员修炼之道>>本书中对代码重构的讲解。

 

 

 

 

 

 

 

 

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [代码重构] 推荐:

代码重构

- - ITeye博客
随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码. 代码需要演化;它不是静态的事物. 重写、重做和重新架构代码合起来,称为重构.    当你遇到绊脚石  ---  代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西  -------- . 如果代码具备以下特征,你都应该考虑重构代码:.

代码重构总结

- - 开源软件 - ITeye博客
重构:对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其理解性,降低其修改成本. 创建一个新方法,命名以它做什么来命名,而不是怎么做来命名. 如果只是简单的委托,可以将方法内联. 被子类继承的方法不能内联. 如果一个临时变量只被简单的表达式赋值一次,就可以将它内联. 将这个临时变量申明为final.

代码重构方向原则指导

- - 外刊IT评论
提示:如果您在阅读器里点击订阅本站的文章链接时发现有一个中转页,这说明你的订阅地址有误,本站的订阅地址(RSS)是:. http://www.aqee.net/feed/,请及时纠正. 重构是一种对软件进行修改的行为,但它并不改变软件的功能特征,而是通过让软件程序更清晰,更简洁和更条理来改进软件的质量.

代码重构:HTML与语义化

- - 标点符
在前端开发过程中,很多人谈到“模块化”,很少人特别关注“语义化”,简单的说大多数人更关注功能的实现,而忽视了实现的细节. 所谓HTML语义化,就是尽可能的理解要表达的内容,选择适合的HTML标签,将内容转换成浏览器认识的语言,通过浏览器传达信息给用户. 目前很多的前端书籍取名就叫精通DIV+CSS,让人感觉DIV可以搞定一切,但是DIV标签仅代表一个块状标记,HTML的每个标签都有它特定的意义,而语义化就是让我们在适当的位置用适当的标签,以更好的让人和机器(机器可理解为浏览器可理解为搜索引擎)都一目了然.

降低代码重构的风险

- - InfoQ cn
重构是每一个开发人员都要面对的功课,Martin Fowler将其定义为“在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改”. 技术专家Paul在 博客中讨论了重构的风险,并提出了降低风险的措施. 重构代码是危险的,代码的变化会导致测试的压力很大. 除非有必要的理由,否则不要轻易重构.