美文网首页
重构—改进软件设计的关键

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

作者: 爱写作的harry | 来源:发表于2019-10-28 00:26 被阅读0次

重构的定义

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

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

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

为什么要做重构

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

重构改进软件的设计

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

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

重构使软件更容易理解

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

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

重构帮助找到bug

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

重构提高编程速度

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

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

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

重构的第一步

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

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

重构与性能

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

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

  • 大多数时候可以忽略
  • 不能忽略的,先完成重构,再调优性能

总结

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

书中金句

  • 一般来说,重构早期的主要动力是尝试理解代码如何工作
  • 需求的变化导致重构变得必要,如果一段代码能正常工作,并且不会再被修改那么完全可以不去重构它
  • 永远将函数的返回值命名为result
  • 傻瓜都能写出计算机可以理解的代码,唯有能写出人类容易理解的代码的,才是优秀的程序员
  • 好的命名十分重要
  • 尽量保持数据不可变(immutable),可变的状态会很快变成烫手的山芋
  • 高效有序重构的关键心得:小的步子可以更快前进,保持代码永远处于可工作状态,小步修改累积起来也能大大改善系统的设计
  • 在我编程的每个小时,我都会做重构

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

相关文章

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

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

  • 「重构」读书笔记

    重构不是目的,而是工具。 为何重构 改进软件设计 维持或改进代码的设计意图,避免代码结构流失 消除重复代码,方便未...

  • 重构

    为何重构? 1.重构改进软件设计 2.重构使软件更容易理解 3.重构帮助找到bug 4.重构提高编程速度 何时重构...

  • 《重构》一书经典总结(一)

    《重构》一书经典总结(一) 为何重构 1.重构改进软件设计2.重构使软件更容易理解3.重构提交稿编程速度4.重构帮...

  • 为什么要重构?何时去重构?

    核心:重构是在不改变软件可观察行为的前提下改善其内部结构。 为什么重构? 重构改进软件设计:如果没有重构,程序的设...

  • Android端重构记录

    关于重构的一些话 为什么我们需要重构? 重构改进软件设计 只为了短期目的或者在完全理解整体设计之前编写出来的代码,...

  • 漫谈项目设计&重构&性能优化

    重构的好处: 重构能够改进软件设计,随着项目需求的变更,项目体积的变大早已与最初的设计大相径庭,代码结构变得凌乱、...

  • 什么情况下要重构

    1 重构的目的 1.1 重构的定义 软件设计大师 Martin Fowler 是这样定义重构的:“重构是一种对软件...

  • 重构

    软件设计大师 Martin Fowler 是这样定义重构的:“重构是一种对软件内部结构的改善,目的是在不改变软件的...

  • 规范与重构

    软件设计大师 Martin Fowler 是这样定义重构的:“重构是一种对软件内部结构的改善,目的是在不改变软件的...

网友评论

      本文标题:重构—改进软件设计的关键

      本文链接:https://www.haomeiwen.com/subject/vflmvctx.html