图书介绍

修改代码的艺术【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

修改代码的艺术
  • (美) Michael C.Feathers著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115163626
  • 出版时间:2007
  • 标注页数:342页
  • 文件大小:16MB
  • 文件页数:358页
  • 主题词:软件开发

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

修改代码的艺术PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 修改机理2

第1章 修改软件2

1.1 修改软件的四个起因2

1.1.1 添加特性和修正bug2

1.1.2 改善设计4

1.1.3 优化4

1.1.4 综合起来4

1.2 危险的修改6

第2章 带着反馈工作8

2.1 什么是单元测试10

2.2 高层测试12

2.3 测试覆盖12

2.4 遗留代码修改算法15

2.4.1 确定修改点16

2.4.2 找出测试点16

2.4.3 解依赖16

2.4.4 编写测试16

2.4.5 改动和重构17

2.4.6 其他内容17

第3章 感知和分离18

3.1 伪装成合作者19

3.1.1 伪对象19

3.1.2 伪对象的两面性22

3.1.3 伪对象手法的核心理念23

3.1.4 仿对象23

第4章 接缝模型25

4.1 一大段文本25

4.2 接缝26

4.3 接缝类型29

4.3.1 预处理期接缝29

4.3.2 连接期接缝32

4.3.3 对象接缝35

第5章 工具40

5.1 自动化重构工具40

5.2 仿对象42

5.3 单元测试用具42

5.3.1 JUnit43

5.3.2 CppUnitLite44

5.3.3 NUnit46

5.3.4 其他xUnit框架46

5.4 一般测试用具46

5.4.1 集成测试框架47

5.4.2 Fitnesse47

第二部分 修改代码的技术50

第6章 时间紧迫,但必须修改50

6.1 新生方法52

6.2 新生类54

6.3 外覆方法58

6.4 外覆类61

6.5 小结66

第7章 漫长的修改67

7.1 理解代码67

7.2 时滞67

7.3 解依赖68

7.4 小结73

第8章 添加特性74

8.1 测试驱动开发74

8.1.1 编写一个失败测试用例75

8.1.2 让它通过编译75

8.1.3 让测试通过75

8.1.4 消除重复76

8.1.5 编写一个失败测试用例76

8.1.6 让它通过编译76

8.1.7 让测试通过77

8.1.8 消除重复代码77

8.1.9 编写一个失败测试用例77

8.1.10 让它通过编译77

8.1.11 让测试通过78

8.1.12 消除重复79

8.2 差异式编程80

8.3 小结88

第9章 无法将类放入测试用具中89

9.1 令人恼火的参数89

9.2 隐藏依赖95

9.3 构造块98

9.4 恼人的全局依赖100

9.5 可怕的包含依赖107

9.6 “洋葱”参数110

9.7 化名参数112

第10章 无法在测试用具中运行方法115

10.1 隐藏的方法115

10.2 “有益的”语言特性118

10.3 无法探知的副作用121

第11章 修改时应当测试哪些方法127

11.1 推测代码修改所产生的影响127

11.2 前向推测132

11.3 影响的传播137

11.4 进行影响推测的工具138

11.5 从影响分析当中学习140

11.6 简化影响结构示意图141

第12章 在同一地进行多处修改,是否应该将相关的所有类都解依赖144

12.1 拦截点145

12.1.1 简单的情形145

12.1.2 高层拦截点147

12.2 通过汇点来判断设计的好坏150

12.3 汇点的陷阱152

第13章 修改时应该怎样写测试153

13.1 特征测试153

13.2 刻画类156

13.3 目标测试157

13.4 编写特征测试的启发式方法161

第14章 棘手的库依赖问题162

第15章 到处都是API调用164

第16章 对代码的理解不足172

16.1 注记/草图172

16.2 清单标注173

16.2.1 职责分离173

16.2.2 理解方法结构174

16.2.3 方法提取174

16.2.4 理解你的修改产生的影响174

16.3 草稿式重构174

16.4 删除不用的代码175

第17章 应用毫无结构可言176

17.1 讲述系统的故事177

17.2 NakedCRC180

17.3 反省你们的交流或讨论182

第18章 测试代码碍手碍脚184

18.1 类命名约定184

18.2 测试代码放在哪儿185

第19章 对非面向对象的项目,如何安全地对它进行修改187

19.1 一个简单的案例187

19.2 一个棘手的案例188

19.3 添加新行为191

19.4 利用面向对象的优势193

19.5 一切都是面向对象196

第20章 处理大类199

20.1 职责识别202

20.2 其他技术213

20.3 继续前进213

20.3.1 战略213

20.3.2 战术214

20.4 类提取之后215

第21章 需要修改大量相同的代码216

第22章 要修改一个巨型方法,却没法为它编写测试232

22.1 巨型方法的种类232

22.1.1 项目列表式方法232

22.1.2 锯齿状方法233

22.2 利用自动重构支持来对付巨型方法236

22.3 手动重构的挑战238

22.3.1 引入感知变量239

22.3.2 只提取你所了解的241

22.3.3 依赖收集243

22.3.4 分解出方法对象243

22.4 策略244

22.4.1 主干提取244

22.4.2 序列发现244

22.4.3 优先提取到当前类中245

22.4.4 小块提取246

22.4.5 时刻准备重新提取246

第23章 降低修改的风险247

23.1 超感编辑247

23.2 单一目标的编辑248

23.3 签名保持249

23.4 依靠编译器251

第24章 当你感到绝望时254

第三部分 解依赖技术258

第25章 解依赖技术258

25.1 参数适配258

25.2 分解出方法对象261

25.3 定义补全266

25.4 封装全局引用268

25.5 暴露静态方法273

25.6 提取并重写调用275

25.7 提取并重写工厂方法276

25.8 提取并重写获取方法278

25.9 实现提取281

25.9.1 步骤283

25.9.2 一个更复杂的例子284

25.10 接口提取285

25.11 引入实例委托290

25.12 引入静态设置方法292

25.13 连接替换296

25.14 参数化构造函数297

25.15 参数化方法301

25.16 朴素化参数302

25.17 特性提升304

25.18 依赖下推307

25.19 换函数为函数指针310

25.20 以获取方法替换全局引用313

25.21 子类化并重写方法314

25.22 替换实例变量317

25.23 模板重定义320

25.24 文本重定义323

附录 重构325

术语表329

索引331

热门推荐