重构—改进软件设计的关键

2019-10-28  本文已影响0人  爱写作的harry

重构的定义

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

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

很多人用重构来指代任何形式的代码清理,其实这种行为被称为“结构调整”(restructuring)更合适,而重构(refactoring)是一种特定的结构调整,重构的关键在于通过运用大量微小且保持软件行为的步骤,一步步达成大规模的修改。

为什么要做重构

重构不是包治百病的灵丹妙药,不会帮你解决所有的问题。不过它却是一个非常好用的工具,可以让我们良好地控制自己的代码。重构可以用于以下4个目的。

重构改进软件的设计

如果没有重构,一个软件的架构将会变得腐坏。当人们为了短期目标而修改代码时,他们往往没有完全理解软件的架构,导致软件的架构越来越不清晰,而这种行为具有累积效应。

经常性的重构有助于维护软件该有的设计和形态。消除重复的代码是一个重要的优化方向,这样会使未来修改的成本低很多。

重构使软件更容易理解

我们的代码不但是给计算机去读的,同时也是给其他程序员去读的,这个程序员可能就是2个月之后的自己,如果代码不能清晰的表明它在做什么,那可能一个小时可以解决的问题会被拖上一天。

所以从这个角度来考虑的话,那重构就显得很必要了,它保证我不用加班了。

重构帮助找到bug

对代码进行重构,可以很容易理解代码的所作所为,找出bug也很容易了。

重构提高编程速度

如果没有重构,在一开始开发速度还算比较快,但是随着代码量的增长,添加一个功能的时间会越来越慢,因为没有一个清晰的结构和模块设计,整个过程就像打补丁一样,需要花更多的时间思考如何把新的代码加入到现有的代码库,出现问题也需要更多的时间去调试。

而持续重构会获得好的软件质量,每次添加新功能时,可以很容易找到在哪里修改。良好的模块划分可以让我只阅读代码库的一小部分就可以放心的做出修改。同时引入bug的可能性也大大降低。

所以整体上来看,持续的重构可以提高编程的速度。

重构的第一步

在进行任何重构之前,需要做的第一步是测试。测试可以保证修改的代码不会引起bug。越大的软件越容易引起bug,测试可以作为bug检测器。

每做完一次修改就应该运行测试,这样如果出问题,可以只考虑一个很小的范围,这样会使查错和修复变得易如反掌。

重构与性能

在聪明的编译器、现代的缓存技术面前,我们很多直觉都是不准确的。软件的性能通常只与代码的一小部分相关,改变其它的部分往往对总体性能影响甚微。有时,一些重构手法确实会影响软件性能,不过这个时候仍然要把重构做完,因为有一份结构良好的代码,让调优性能也会变得非常容易,最终我会得到一份既整洁又高效的代码。

因此,对于重构的性能问题:

总结

本文主要介绍了重构的概念和目的。在我们写代码的过程中,我们应该经常性的重构,让我们的代码更清晰易懂,让未来的修改成本更低。

书中金句

参考:
《重构:改善既有代码的设计(第二版)》

上一篇 下一篇

猜你喜欢

热点阅读