第1章本书导读 1
1.1概述 1
1.2第1部分:类中的异味 2
1.3第2部分:类之间的异味 2
1.4第3部分:待重构的程序 2
1.5关于练习 3
第1部分类中的异味 5
第2章重构周期 5
2.1什么是重构 5
2.2异味就是问题 6
2.3重构周期 7
2.4怎样算完成 8
2.5重构内部 10
2.6实战练习 13
2.7小结 13
第3章可度量的异味 14
3.1所涉及的异味 14
3.2注释 15
3.3过长的方法 17
3.4过大的类 22
3.5过长的参数表 26
3.6实战练习 28
3.7小结 29
补充点1异味和重构 30
第4章命名 36
4.1所涉及的异味 37
4.2名字(包括匈牙利记法)中包含类型 37
4.3表达力差的名字 38
4.4不一致的名字 40
第5章不必要的复杂性 42
5.1所涉及的异味 42
5.2死代码 42
5.3过分一般性 43
补充点2逆处理 46
第6章重复 48
6.1所涉及的异味 49
6.2魔法数 49
6.3重复性代码 50
6.4具有不同接口的相似类 51
6.5实战练习 52
第7章条件逻辑 58
7.1所涉及的异味 58
7.2 Null检查 58
7.3复杂的布尔表达式 60
7.4特殊用例 61
7.5模拟继承(Switch语句) 62
补充点3设计模式 65
第2部分类之间的异味 68
第8章数据 68
8.1所涉及的异味 68
8.2基本类型困扰 68
8.3数据类 72
8.4数据泥团 76
8.5临时字段 77
第9章继承 78
9.1所涉及的异味 78
9.2拒收的遗赠 78
9.3不当的紧密性(子类形式) 80
9.4懒惰类 81
第10章职责 83
10.1所涉及的异味 83
10.2依恋情结 83
10.3不当的紧密性(一般形式) 85
10.4消息链 86
10.5中间人 87
10.6实战练习 88
第11章相关改变 91
11.1所涉及的异味 91
11.2发散式改变 91
11.3霰弹式修改 94
11.4并行继承体系 96
11.5组合爆炸 97
第12章库类 99
12.1所涉及的异味 99
12.2不完备的库类 99
12.3实战练习 100
补充点4重构构成形式 103
第3部分待重构的程序 105
第13章 一个数据库例子 105
13.1 Course.java 106
13.2 Offering.java 108
13.3 Schedule.java 110
13.4 Report.java 114
13.5 TestSchedule.java 115
13.6 TestReport.java 118
第14章一个简单的游戏 122
开发环节 128
第15章名录 130
15.1引言 130
15.2第1种做法:Catalog.itemsMatching(query) 131
15.3第2种做法:Querymatchesln(catalog) 133
15.4第3种做法:Process(catalog.data,query.data) 134
15.5小结 135
第16章计划游戏模拟器 136
16.1第1部分:原始代码 137
代码 137
实战练习 145
16.2第2部分:重新分配特性 146
5个为什么 148
16.3去除重复、选择问题和一些模糊性 149
16.4第3部分:进一步改进代码 152
第17章下一步何去何从 155
17.1参考书 155
17.2警告 155
将重构应用到实践中 155
将测试应用到实践中 155
求助他人 156
17.3必做练习 156
每周清除一个异味 156
重新重构 156
只是重构 156
吸气/呼气(Inhale/Exhale) 156
反向重构/误构(Defactoring/Malfactoring) 156
重构套路 157
17.4网站资源 157
第4部分附录 159
附录A所选问题的答案 159
附录BJava重构工具 188
附录C重构逆处理 189
附录D主要重构技术 191
参考文献 194