什么是重构? 

在不改变现有程序功能的情况下,对代码结构及写法进行调整。

重构目的是什么? 

让我们的代码更清晰,更容易理解,更易于阅读和易于后期维护。

为什么要重构?

  1. 重构使程序更容易理解。
    重构的宗旨就是让代码告诉编程人员它要做什么,当没一段代码都能长清晰的表达自己的功能。那么这样的代码就非常容易理解。
    同时,在重构代码的过程中,更加深了你对程序功能及代码构造的理解。
  2. 重构可以改善程序设计。
    正如极限编程(XP)的观点:重构可以取代预先设计。按最初想法开发编码,让代码有效运作,然后再重构执行。
    所谓极限还是有些偏激,其实涉及跟重构相辅相成,好设计能造就好程序,重构则能修复设计的不足。重构的过程就是一个代码整理的过程,同时也是代码检验的过程,在这个过程中我们可以发现代码不足的同时也能发现程序设计的不足。

  3. 重构可以提高编码效率。
    一目了然的代码可以节省你不少用于去理解代码的时间,这样编码效率自然高了。
  4. 利用重构找到bug,提高性能。
    重构的过程就是代码检验的过程,有些埋藏很深的bug也许就会这样被你发现了。
  5. 利用重构提高产品生命周期。
    很多时候你都听到程序员说,这些代码是已经离职很久的人员写的,太烂了,需要重写。这是产品和项目经理最愿看到的,如果部门有重构文化,那么你的产品生命周期就无形的在提高。

何时重构?

随时重构,不要为了重构而重构。

  • 三次法则:第一次做某件事时只管去做;第二次做类似的事会产生反感,但无论如何还是可以去做;第三次再做类似的事,你就该重构了。
  • 添加功能时重构:代码的设计无法帮助我轻松添加我所需的特性,这时候就可以考虑重构。通过完成重构,新特性的添加就会更快速,更流畅。
  • 修补错误时重构:收到一份错误报告,就是重构的信号。
  • 复审代码时重构:复审者搭配一个原作者,共同处理这些代码。

何时不应该重构?

  • 产品即将发布,项目即将验收时不该做重构。
  • 程序重构的代价超过重写编写的代价。

JavaScript的重构跟其他面向对象重构有什么不同?

JavaScript作为弱势语言,他的重构更据有挑战性,需要考虑的东西也会多一些,同时对一些面向对象的重构可能会做的比较少,但需要更加细心。具体表现出以下几点。

  1. 遇有JavaScript和HTML,CSS的交互很多,所以分离三者是JavaScript重构的一个大部分。
  2. 事件处理和回调机制是JavaScript的用途非常广,这块也需要在重构中考虑。
  3. JavaScript的类库众多,在选择和淘汰上也是重构的一部分。