展开全部

主编推荐语

计算机专家Michael C. Feathers的经典之作。

内容简介

本书内容包括,理解修改软件的机制:添加特性、修正缺陷、改进设计、优化性能把遗留代码放到测试用具之中编写测试,防止引入新的问题包含Java、C++、C和C#的示例。其中介绍的大多数技术适用于其他任何语言或平台,精确地确定要在哪些地方修改代码,处理非面向对象的遗留代码,处理看起来没有任何结构的应用程序。

目录

  • 版权信息
  • 译者序
  • 前言
  • 第一部分 修改机制
  • 第1章 修改软件
  • 1.1 修改软件的四大原因
  • 1.2 组合在一起
  • 第2章 利用反馈
  • 2.1 什么是单元测试
  • 2.2 高层次测试
  • 2.3 测试覆盖
  • 2.4 遗留代码修改方法
  • 2.5 本书其他部分
  • 第3章 感知和分离
  • 3.1 伪协作程序
  • 第4章 接缝模型
  • 4.1 大片的文本
  • 4.2 接缝
  • 4.3 接缝类型
  • 第5章 工具
  • 5.1 自动化重构工具
  • 5.2 模拟对象
  • 5.3 单元测试用具
  • 5.4 一般测试用具
  • 第二部分 修改软件
  • 第6章 时间很紧张,但还需要修改
  • 6.1 新生方法(Sprout Method)
  • 6.2 新生类(Sprout Class)
  • 6.3 包装方法
  • 6.4 包装类
  • 6.5 小结
  • 第7章 永远都无法完成的修改
  • 7.1 理解
  • 7.2 延迟时间
  • 7.3 打破依赖关系
  • 7.4 构建依赖关系
  • 7.5 小结
  • 第8章 如何添加新特性
  • 8.1 测试驱动开发
  • 8.2 根据差异编程
  • 8.3 小结
  • 第9章 无法把类放到测试用具中
  • 9.1 恼人的参数
  • 9.2 具有隐藏依赖的情况
  • 9.3 构造Blob的情况
  • 9.4 恼人的全局依赖
  • 9.5 可怕的Include依赖
  • 9.6 洋葱皮参数
  • 9.7 别名参数
  • 第10章 无法在测试用具中运行方法
  • 10.1 隐藏方法的情况
  • 10.2 “有帮助的”语言特性
  • 10.3 检测不到的副作用
  • 第11章 我需要修改代码,应该测试哪些方法
  • 11.1 推断影响
  • 11.2 正向推理
  • 11.3 影响传播
  • 11.4 推理影响的工具
  • 11.5 从影响分析中学习
  • 11.6 简化影响草图
  • 第12章 我需要在一个地方做多处变更,需要为所有涉及的类打破依赖关系吗
  • 12.1 拦截点
  • 12.2 使用夹点来判断设计
  • 12.3 夹点陷阱
  • 第13章 我需要修改代码,但不知道要编写哪些测试
  • 13.1 鉴定测试
  • 13.2 鉴定类
  • 13.3 定向测试(Targeted Testing)
  • 13.4 编写鉴定测试的启示
  • 第14章 对库的依赖让我快要崩溃了
  • 第15章 应用全是API调用
  • 第16章 对代码理解不够,所以无法修改
  • 16.1 做笔记,画草图
  • 16.2 列表标记
  • 16.3 临时重构
  • 16.4 删除没有用的代码
  • 第17章 应用没有结构
  • 17.1 讲述系统的故事
  • 17.2 裸CRC
  • 17.3 对话审查(Conversation Scrutiny)
  • 第18章 测试代码挡路了
  • 18.1 类命名规范
  • 18.2 测试位置
  • 第19章 项目并非面向对象,如何才能够安全地修改
  • 19.1 简单的案例
  • 19.2 困难的案例
  • 19.3 增加新行为
  • 19.4 充分利用面向对象
  • 19.5 完全面向对象
  • 第20章 类太大了,我不想让它继续膨胀
  • 20.1 查看职责
  • 20.2 其他技术
  • 20.3 继续前进
  • 20.4 提取类之后
  • 第21章 在各个地方修改的都是同样的代码
  • 第22章 我需要修改一个巨兽方法,但无法为其编写测试
  • 22.1 巨兽的种类
  • 22.2 使用自动重构支持来对付巨兽
  • 22.3 手动重构挑战
  • 22.4 策略
  • 第23章 如何知道没有造成任何破坏
  • 23.1 超感编辑(Hyperaware Editing)
  • 23.2 单一目标编辑
  • 23.3 保留签名
  • 23.4 依赖于编译器
  • 23.5 结对编程
  • 第24章 我要崩溃了,它不会再有任何改进
  • 第三部分 打破依赖的技术
  • 第25章 打破依赖的技术
  • 25.1 调整参数
  • 25.2 分解方法对象
  • 25.3 完善定义
  • 25.4 封装全局引用
  • 25.5 暴露静态方法
  • 25.6 提取并重写调用
  • 25.7 提取并重写工厂方法
  • 25.8 提取并重写getter方法
  • 25.9 提取实现器
  • 25.10 提取接口
  • 25.11 引入实例委托器
  • 25.12 引入静态设置器
  • 25.13 链接替换
  • 23.14 参数化构造函数
  • 25.15 参数化方法
  • 25.16 原始化参数(Primitivize Parameter)
  • 25.17 上推特性
  • 25.18 下推依赖
  • 25.19 使用函数指针替换函数
  • 25.20 使用getter方法替换全局引用
  • 25.21 创建子类并重写方法
  • 25.22 替代实例变量
  • 25.23 模板重定义
  • 25.24 文本重定义
  • 附录 重构
  • 术语表
展开全部

评分及书评

评分不足
2个评分
  • 用户头像
    给这本书评了
    3.0

    书的前 30% 是比较好的部分。

      转发
      评论

    出版方

    机械工业出版社

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。