美文网首页
《修改代码的艺术》の摘录

《修改代码的艺术》の摘录

作者: Elizwy_青木 | 来源:发表于2020-04-15 08:54 被阅读0次

前言

最近入职了一家新公司,接承已有系统继续开发。原有架构非常厉害,对于我来说有很多学习点。但是也有些不足,就是在架构之后的扩展因为历史,人员变迁的原因,出现了很多遗留代码。这些在我处理新特性时非常的麻烦。这本书的出现及时将我拉出这个泥潭。故,先在这里做摘录,融缩精华,以便之后进行个人加工

书的结构

图片.png

修改软件

  • 修改软件的四个起因、

    1. 添加新特性
    2.修正bug
    3.改善设计
    4.优化资源使用
    
    
  • 行为对于软件来说是最重要的一样东西。软件的用户要依赖于软件行为。用户喜欢我们添加行为,然而如果我们改变或移除了他们原本所依赖的行为,那么他们就不会在相信我们

  • 在不改变软件行为的前提下改善其设计的举动称为重构

  • 对于重构来说,改变程序的结构目的是让代码更容易维护。

  • 对于优化来说,改变程序使用的某些资源(时间/内存),让成本下降

  • 要想安全地进行修改,关键在与理解

  • 避免修改带来的后果

    1.类越来越大,越来越难以维护
    2.对代码生疏
    3.带来恐惧心理
    

带着反馈工作

  • 修改应该有防护网来保护安全
  • 回归测试:通过测试来检验变化。周期性地运行测试来检验已知的良好行为,以便确诊软件是否还像它以前那样工作
  • 好的单元测试应具备的品质
    1.运行快
    2. 能帮助我们定位问题所在
    
  • 依赖性是软件开发中最为关键的问题之一。在处理遗留代码的过程中很大一部分都市围绕着“解除依赖性以便使改动变得更为容易”这个目标来进行的
  • 遗留代码的困境
    我们在修改代码时,应当有测试在周围“护”着。而为了将这些测试安置妥当,我们往往又得去修改代码
    
  • 遗留代码修改算法
    1.确定改动点
    2.找到测试点
    3.解依赖
    4.编写测试
    5.修改,重构

感知与分离

  • 感知:当我们无法直接访问到代码计算出的值时,就需要通过解依赖来“感知”这些值
  • 分离:当我们无法将哪怕一小块代码放入到测试用具中去运行时,就需要通过解依赖将这块代码分离出来
  • 在编写测试时,我们得采用分而治之的方案
  • 伪对象有两面性,对被测试者和测试者拥有两套逻辑
  • 仿对象就是在内部进行断言检查的伪对象

接缝模型

  • 接缝,指程序中的一些特殊的点,在这些点上你无需作任何修改就可以达到改动程序行为的目的
  • 对象接缝是面向对象语言中最有用的一种接缝

工具

  • 在拿到一个自动化重构工具之后,要先编写测试,然后自动重构,防止工具本身的漏洞带来重构的漏洞
  • 仿对象 www.mockobjects.com
  • 单元测试工具 : junit,xunit
  • 集成测试工具: fitness (www.fitness.org)

时间紧迫,但必须修改

新生方法

  • 场景
    当需要一个系统中添加特性且这个特性可以用全新代码来编写时,建议将这些代码写在一个新的方法中,并在需要用到这个新功能的地方调用这一方法。这样至少可以为新编写的代码进行测试
  • 步骤
    1.确定修改点
    2.如果修改可以在修改点 以单块连续的语句序列出现,那么在该点  插入新方法的调用,然后注释掉
    3.确定入参 (原方法的局部变量)
    4.确定出参 
    5.测试驱动开发新方法
    6.取消注释,生效新方法
    
  • 优缺分析
    • 缺点:效果上暂时放弃了原方法以及它所属的类
    • 优点: 新旧代码被清楚的隔离开,且新代码被覆盖在测试网之下了

新生类

  • 场景
    原类在对象创建方面有大量依赖,导致不可能在合理时间限期内使这个类在测试用具中被实例化;原类含有很多隐藏依赖,需要进行大量侵入式重构才能解除这些依赖
  • 解决方案
    创建另外一个类来容纳所要进行的改动,并在原类中使用这个新类

相关文章

网友评论

      本文标题:《修改代码的艺术》の摘录

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