内容简介 · · · · · ·
本书内容给力,但通俗易懂。读者群适应面广,对初、中、高级程序员均有相当大的帮助。
对初、中级程序员:让他们见识专业级软件开发是如何进行的。掌握重构七步的技巧,成为优秀的程序员。
对高级程序员:让他们理解重构如何成为一种习惯,以提高代码质量。
对项目经理和产品经理:让他们掌握如何运用重构的手法管理遗留系统,延续产品生命力。
作者简介 · · · · · ·
范钢
1999年毕业于重庆大学,后攻读哈尔滨工业大学软件工程硕士。参与过国内数十个大型软件研发项目,现任航天信息股份有限公司系统架构师,先后担任过软件工程师、需求分析员、主管设计师、项目经理、系统架构师等各项职务。长期关注软件设计与质量的基础理论研究。
目录 · · · · · ·
第一部分 基础篇
第1章 重构:改变既有代码的一剂良药 2
1.1 什么是系统重构 2
1.2 在保险索上走钢丝 3
1.3 大布局与小步快跑 5
1.4 软件修改的四种动机 6
· · · · · · (更多)
第1章 重构:改变既有代码的一剂良药 2
1.1 什么是系统重构 2
1.2 在保险索上走钢丝 3
1.3 大布局与小步快跑 5
1.4 软件修改的四种动机 6
· · · · · · (更多)
第一部分 基础篇
第1章 重构:改变既有代码的一剂良药 2
1.1 什么是系统重构 2
1.2 在保险索上走钢丝 3
1.3 大布局与小步快跑 5
1.4 软件修改的四种动机 6
1.5 一个真实的谎言 9
第2章 重构方法工具箱 10
2.1 重构是一系列的等量变换——第一次HelloWorld重构 10
2.2 盘点我们的重构工具箱——对HelloWorld抽取类和接口 13
第3章 小步快跑的开发模式 19
3.1 大布局你伤不起 19
3.2 小设计而不是大布局 20
3.3 小步快跑是这样玩的——HelloWorld重构完成 22
第4章 保险索下的系统重构 30
4.1 你不能没有保险索 30
4.2 自动化测试——想说爱你不容易 31
4.3 我们是这样自动化测试的——JUnit下的HelloWorldTest 33
4.4 采用Mock技术完成测试 37
第二部分 实践篇
第5章 第一步:从分解大函数开始 44
5.1 超级大函数——软件退化的重灾区 44
5.2 抽取方法的实践 51
5.3 最常见的问题 54
第6章 第二步:拆分大对象 57
6.1 大对象的演化过程 57
6.2 大对象的拆分过程——抽取类与职责驱动设计 60
6.3 单一职责原则(SRP)与对象拆分 61
6.4 合久必分,分久必合——类的归并 63
第7章 第三步:提高代码复用率 66
7.1 顺序编程的烦恼 66
7.2 代码重复与DRY原则 67
7.3 提高代码复用的方法 69
7.3.1 当重复代码存在于同一对象中时——抽取方法 69
7.3.2 当重复代码存在于不同对象中时——抽取类 71
7.3.3 不同对象中复用代码的另一种方法——封装成实体类 72
7.3.4 当代码所在类具有某种并列关系时——抽取父类 75
7.3.5 当出现继承泛滥时——将继承转换为组合 76
7.3.6 当重复代码被割裂成碎片时——继承结合模板模式 78
7.4 代码重复的检查工具 79
第8章 第四步:发现程序可扩展点 80
8.1 开放?封闭原则与可扩展点设计 81
8.2 过程的扩展与放置钩子——运用模板模式增加可扩展点 85
8.3 面向切面的可扩展设计 89
8.4 其他可扩展设计 93
第9章 第五步:降低程序依赖度 98
9.1 接口、实现与工厂模式 98
9.1.1 彻底理解工厂模式和依赖反转原则 98
9.1.2 工厂模式在重构中的实际运用 102
9.2 外部接口与适配器模式——与外部系统解耦 106
9.3 继承的泛滥与桥接模式 109
9.4 方法的解耦与策略模式 112
9.5 过程的解耦与命令模式 116
9.6 透明的功能扩展与设计——组合模式与装饰者模式 119
第10章 第六步:我们开始分层了 128
10.1 什么才是我们需要的分层 128
10.2 怎样才能拥抱需求的变化 131
10.3 贫血模型与充血模型 136
10.4 我们怎样面对技术的变革 139
第11章 一次完整的重构过程 143
11.1 第一步:分解大函数 143
11.2 第二步:拆分大对象 145
11.3 第三步:提高复用率 147
11.4 第四步:发现扩展点 148
11.5 第五步:降低依赖度 151
11.6 第六步:分层 151
11.7 第七步:领域驱动设计 153
第三部分 进阶篇
第12章 什么时候重构 156
12.1 重构是一种习惯 156
12.2 重构让程序可读 158
12.3 重构,才好复用 159
12.4 先重构,再扩展 161
12.5 变更任务紧急时,又该如何重构 163
第13章 测试驱动开发 166
13.1 测试驱动开发(TDD)vs.后测试开发(TAD) 167
13.2 测试驱动开发与重构 170
13.3 遗留系统怎样开展TDD 178
第14章 全面的升级任务 182
14.1 计划式设计vs.演进式设计 182
14.2 风险驱动设计 184
14.3 制定系统重构计划 188
第15章 我们怎样拥抱变化 190
15.1 领域才是软件系统的“心”——工资软件的三次设计演变 190
15.2 领域模型分析方法 197
15.3 原文分析法 199
15.4 领域驱动设计——使用领域模型与客户一起设计 203
15.5 在遗留系统中的应用 209
第16章 测试的困境 213
16.1 重构初期的困局 213
16.2 解耦与自动化测试 215
16.3 开发人员,还是测试人员 219
16.4 建立自动化测试体系 223
第17章 系统重构的评价 225
17.1 评价软件质量的指标 225
17.2 怎样评价软件质量呢 228
结束语:重构改变了世界 233
附录 235
· · · · · · (收起)
第1章 重构:改变既有代码的一剂良药 2
1.1 什么是系统重构 2
1.2 在保险索上走钢丝 3
1.3 大布局与小步快跑 5
1.4 软件修改的四种动机 6
1.5 一个真实的谎言 9
第2章 重构方法工具箱 10
2.1 重构是一系列的等量变换——第一次HelloWorld重构 10
2.2 盘点我们的重构工具箱——对HelloWorld抽取类和接口 13
第3章 小步快跑的开发模式 19
3.1 大布局你伤不起 19
3.2 小设计而不是大布局 20
3.3 小步快跑是这样玩的——HelloWorld重构完成 22
第4章 保险索下的系统重构 30
4.1 你不能没有保险索 30
4.2 自动化测试——想说爱你不容易 31
4.3 我们是这样自动化测试的——JUnit下的HelloWorldTest 33
4.4 采用Mock技术完成测试 37
第二部分 实践篇
第5章 第一步:从分解大函数开始 44
5.1 超级大函数——软件退化的重灾区 44
5.2 抽取方法的实践 51
5.3 最常见的问题 54
第6章 第二步:拆分大对象 57
6.1 大对象的演化过程 57
6.2 大对象的拆分过程——抽取类与职责驱动设计 60
6.3 单一职责原则(SRP)与对象拆分 61
6.4 合久必分,分久必合——类的归并 63
第7章 第三步:提高代码复用率 66
7.1 顺序编程的烦恼 66
7.2 代码重复与DRY原则 67
7.3 提高代码复用的方法 69
7.3.1 当重复代码存在于同一对象中时——抽取方法 69
7.3.2 当重复代码存在于不同对象中时——抽取类 71
7.3.3 不同对象中复用代码的另一种方法——封装成实体类 72
7.3.4 当代码所在类具有某种并列关系时——抽取父类 75
7.3.5 当出现继承泛滥时——将继承转换为组合 76
7.3.6 当重复代码被割裂成碎片时——继承结合模板模式 78
7.4 代码重复的检查工具 79
第8章 第四步:发现程序可扩展点 80
8.1 开放?封闭原则与可扩展点设计 81
8.2 过程的扩展与放置钩子——运用模板模式增加可扩展点 85
8.3 面向切面的可扩展设计 89
8.4 其他可扩展设计 93
第9章 第五步:降低程序依赖度 98
9.1 接口、实现与工厂模式 98
9.1.1 彻底理解工厂模式和依赖反转原则 98
9.1.2 工厂模式在重构中的实际运用 102
9.2 外部接口与适配器模式——与外部系统解耦 106
9.3 继承的泛滥与桥接模式 109
9.4 方法的解耦与策略模式 112
9.5 过程的解耦与命令模式 116
9.6 透明的功能扩展与设计——组合模式与装饰者模式 119
第10章 第六步:我们开始分层了 128
10.1 什么才是我们需要的分层 128
10.2 怎样才能拥抱需求的变化 131
10.3 贫血模型与充血模型 136
10.4 我们怎样面对技术的变革 139
第11章 一次完整的重构过程 143
11.1 第一步:分解大函数 143
11.2 第二步:拆分大对象 145
11.3 第三步:提高复用率 147
11.4 第四步:发现扩展点 148
11.5 第五步:降低依赖度 151
11.6 第六步:分层 151
11.7 第七步:领域驱动设计 153
第三部分 进阶篇
第12章 什么时候重构 156
12.1 重构是一种习惯 156
12.2 重构让程序可读 158
12.3 重构,才好复用 159
12.4 先重构,再扩展 161
12.5 变更任务紧急时,又该如何重构 163
第13章 测试驱动开发 166
13.1 测试驱动开发(TDD)vs.后测试开发(TAD) 167
13.2 测试驱动开发与重构 170
13.3 遗留系统怎样开展TDD 178
第14章 全面的升级任务 182
14.1 计划式设计vs.演进式设计 182
14.2 风险驱动设计 184
14.3 制定系统重构计划 188
第15章 我们怎样拥抱变化 190
15.1 领域才是软件系统的“心”——工资软件的三次设计演变 190
15.2 领域模型分析方法 197
15.3 原文分析法 199
15.4 领域驱动设计——使用领域模型与客户一起设计 203
15.5 在遗留系统中的应用 209
第16章 测试的困境 213
16.1 重构初期的困局 213
16.2 解耦与自动化测试 215
16.3 开发人员,还是测试人员 219
16.4 建立自动化测试体系 223
第17章 系统重构的评价 225
17.1 评价软件质量的指标 225
17.2 怎样评价软件质量呢 228
结束语:重构改变了世界 233
附录 235
· · · · · · (收起)
"大话重构"试读 · · · · · ·
当你面对一本书,你最想知道的应该是这本书究竟可以给你带来什么。 对于这本书,它最大的价值在于两点: 一、 让你明白真正的专业级软件开发是如何进行的。 打个比方,你是摄影新手,拽得很,但无论你怎么摆弄你的数码单反,就是照不出专业摄影师似乎轻轻松松就搞出来的东西。他们使用的东西,你没见过,瞧不出是干嘛用的,自然也不知道为什么要用它。他们所做的至关重要的措施,你也..
· · · · · · (查看全部试读)
丛书信息
· · · · · ·
图灵原创(共132册),
这套丛书还有
《Cocos2d-JS游戏开发》《魔力Haskell》《算法的乐趣》《简单高效LaTeX》《App Inventor开发实战》
等
。
喜欢读"大话重构"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"大话重构"的人也喜欢 · · · · · ·
- 软件设计重构 7.7
- 发布! 7.6
- C++编程剖析 8.4
- Java程序员修炼之道 7.4
- 敏捷软件开发 8.6
- DevOps实践指南 8.4
- 编程匠艺 8.7
- 构建之法 8.5
- 快学Scala 7.5
- Python开发实战 6.3
大话重构的书评 · · · · · · ( 全部 4 条 )
重构需要安全保护,一定吗?
遗留代码,难以理解难以修改难以验证,要修缺陷或加新功能,都是战战兢兢,再老道的老司机碰上这种典型遗留代码都可能翻坑。如何处理,要安全重构,先调整再修改?安全,有三个方面,工具已证实的方法,如重命名;golden master来验证;最主流的单测保证。这些都有成本,但是没...
(展开)
> 更多书评 4篇
论坛 · · · · · ·
在这本书的论坛里发言以下书单推荐 · · · · · · ( 全部 )
- 各种大话系列 (惟以不永怀)
- 前端 (cowboy)
- 待购书 (财神到)
- 想读的计算机图书 (fpzh2011)
- 计算机方向国人写的高分书 (damengxinfa02)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有155人想读,手里有一本闲着?
订阅关于大话重构的评论:
feed: rss 2.0
1 有用 中國壹石頭 2015-10-23 22:41:43
书从架构、设计模式、具体代码实现分别讲述了重构在开发的各个阶段的适用原则,都是经验之谈,适合3年以上有一定经验的程序员来读。和《重构》相比,这本书更注重从开发的实践中总结各种重构方法的适用场景和原则,而不是陷于具体的重构方法。这本书和《重构》合起来读,可以对重构有个整体性的认识。《大话重构》算是对实际的开发提供了一个《重构》的指导方向。唯一的缺憾就是该书和Java的主流框架结合比较多。不太适合Ja... 书从架构、设计模式、具体代码实现分别讲述了重构在开发的各个阶段的适用原则,都是经验之谈,适合3年以上有一定经验的程序员来读。和《重构》相比,这本书更注重从开发的实践中总结各种重构方法的适用场景和原则,而不是陷于具体的重构方法。这本书和《重构》合起来读,可以对重构有个整体性的认识。《大话重构》算是对实际的开发提供了一个《重构》的指导方向。唯一的缺憾就是该书和Java的主流框架结合比较多。不太适合Java之外的程序来看。总体来说是本好书,值得一读。 (展开)
0 有用 童谣轻扬 2019-10-20 09:44:23
不同于Martin的经典《重构》,本书更多地从实际项目和中国国情角度作了阐述。语言通俗、内容不会太深,够用即可,接下来就是在日后实践中我能不能践行的问题了!
0 有用 wdpm 2019-11-21 11:54:31
立足于国内软件行业行情,以java语言为例子进行讲解。语言通俗易懂,实践性强。值得一读。
0 有用 菩提树下搬砖头 2017-12-30 23:35:51
介绍了各种实用的重构方法,语言通俗易懂。
0 有用 冰凰 2016-03-27 17:18:15
实践性强,JAVA必备
0 有用 阿里阿里巴巴 2021-10-09 18:32:05
有收获
0 有用 流雲 2019-12-13 22:54:30
虽是java语言做例子,但还是比较浅显易懂的。 干货太少,且书中有很多重复的代码和内容,会让人觉得作者有蹭稿费的嫌疑
0 有用 wdpm 2019-11-21 11:54:31
立足于国内软件行业行情,以java语言为例子进行讲解。语言通俗易懂,实践性强。值得一读。
0 有用 童谣轻扬 2019-10-20 09:44:23
不同于Martin的经典《重构》,本书更多地从实际项目和中国国情角度作了阐述。语言通俗、内容不会太深,够用即可,接下来就是在日后实践中我能不能践行的问题了!
0 有用 半条豆瓣虫 2019-10-14 00:46:52
比较能看得进的书…毕竟现在的段位还不够去啃大部头经典。正好借书里的思路对手头的那座“屎山”做了修整,果然易读许多。小步快跑颇有所获,只是一直小步跑的话,何年何月才能得偿所愿哦~