16
2013
04

《重构-改善既有代码的设计》笔记 - 重构原则

《重构-改善既有代码的设计》一本非常经典的书籍,第二次看这本书了,说实话第一次看的已经忘的差不多了。开始做一部分笔记,避免看完后再次忘记,让经典保留到我的博客。部分文字摘抄自此书,部分为自己的总结语言。先分享第一张吧。


什么是重构?

名词解释:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

动词解释:使用一系列的重构手法,调整其结构。前提:不改变软件可观察行为


重构不止是整理代码,它还提供了一种更高效且受控的代码整理技术。(非常精辟)

编码的两顶帽子: 添加新功能和重构

重构与性能优化对比: 都是只改变内部结构不改变可观察行为(性能优化需要提高速度)。但两者出发点不同。性能优化为提高性能不得不使代码更难阅读。


为什么要重构?
  • 重构改进软件设计

    重构很像是在整理代码,你所做的就是让所有东西回到应处的位置上。所以经常性的重构可以帮助代码维持自己应有的形态。

    改进设计的一个重要方向就是消除重复代码,重构要做的就是确定所有事物和行为在代码中只表述一次,而这正是优秀设计的根本。


  • 重构使软件更容易理解

    在重构上花点时间,让代码更好地表达自己的用途。它的核心就是“准确说出我所要的”

    更好理解的编程,就是尽量把该记住的东西写到程序(代码)中。

    利用重构可以协助我们理解曾经不熟悉的代码。


  • 重构帮忙找到bug

  • 重构提高编程速度

    良好设计是维持软件开发速度的根本。但重构可以帮助你更快速地开发软件,因为它阻止系统腐败变质,甚至还可以提高软件质量。

什么时候重构?

重构应该随时随地进行,不应该为重构而重构。

  • 三次法则:第一次做某件事时只管去做;第二次做类似的事会产生反感,但无论如何还是可以去做;第三次再做类似的事,你就该重构了。

  • 添加功能时重构:代码的设计无法帮助我轻松添加我所需的特性,这时候就可以考虑重构。通过完成重构,新特性的添加就会更快速,更流畅。

  • 修补错误时重构:收到一份错误报告,就是重构的信号。

  • 复审代码时重构:复审者搭配一个原作者,共同处理这些代码。


重构的难题?
  1. 数据库结构的耦合

  2. 修改接口:让旧接口调用新接口。当你修改某个函数名时,请留下旧函数,让它调用新函数。千万不要复制函数实现。

  3. 难以通过重构手法完成的设计改动


什么时候不应该重构

  1. 重构它还不如重新写一个来的简单。

  2. 现在代码根本没法正常运作

  3. 项目已近最后期限

重构与设计?

极限编程(XP)的观点:重构可以取代预先设计。按最初想法开发编码,让代码有效运作,然后再重构执行。

本书观点:重构和设计彼此互补,重构修补预先设计的漏洞。


重构与性能?

良好的代码,让你能更快速地添加功能,让你有充足的时间进行性能调整。

因为构造良好的程序,让你在进行性能分析时能更好的定位到问题代码。


« 上一篇下一篇 »

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。