第1章 路线图 1
1.1 概述 1
1.2 第1部分:类之中的坏味道 2
1.3 第2部分:类之间的坏味道 2
1.4 第3部分:待重构的程序 2
1.5 关于练习 3
第1部分 类之中的坏味道
第2章 重构周期 7
2.1 什么是重构? 7
2.2 坏味道即为问题 8
2.3 重构周期 9
2.4 什么时候才算结束? 9
2.5 在重构之中 12
2.6 实战练习 15
2.7 小结 15
第3章 可度量的坏味道 17
3.1 所涉及的坏味道 17
3.2 注释 18
3.3 过长的方法 20
3.4 过大的类 25
3.5 过长的参数表 30
3.6 更多实战练习 32
3.7 小结 33
中场休息1 坏味道和重构 35
第4章 命名 39
4.1 所涉及的坏味道 40
4.2 名字(包括匈牙利记法)中嵌有类型 40
4.3 表达能力差的名字 41
4.4 不一致的名字 42
第5章 不必要的复杂性 45
5.1 所涉及的坏味道 45
5.2 死代码 45
5.3 过分一般性 46
中场休息2 逆处理 49
第6章 重复 51
6.1 所涉及的坏味道 52
6.2 魔法数 52
6.3 重复性代码 53
6.4 接口不同的相似类 54
6.5 实战练习 55
第7章 条件逻辑 63
7.1 所涉及的坏味道 63
7.2 Null检查 63
7.3 复杂的布尔表达式 65
7.4 特殊用例 67
7.5 模拟继承(Switch语句) 68
中场休息3 设计模式 71
第2部分 类之间的坏味道
第8章 数据 75
8.1 所涉及的坏味道 75
8.2 基本类型困扰 75
8.3 数据类 79
8.4 数据泥团 83
8.5 临时字段 85
第9章 继承 87
9.1 所涉及的坏味道 87
9.2 拒收的遗赠 87
9.3 不当的紧密性(子类形式) 90
9.4 慵懒类 90
第10章 职责 93
10.1 所涉及的坏味道 93
10.2 依恋情结 93
10.3 不当的紧密性(一般形式) 95
10.4 消息链 96
10.5 中间人 97
10.6 实战练习 98
第11章 相关改变 103
11.1 所涉及的坏味道 103
11.2 发散式改变 103
11.3 霰弹式修改 107
11.4 并行继承体系 108
11.5 组合爆炸 109
第12章 库类 111
12.1 所涉及的坏味道 111
12.2 不完备的库类 111
12.3 实战练习 112
中场休息4 重构构成形式 117
第3部分 待重构的程序
第13章 一个数据库例子 121
13.1 Course.java(可由www.xp123.com/rwb在线获得) 122
13.2 Offering.java 124
13.3 Schedule.java 126
13.4 Report.java 129
13.5 TestSchedule.java 131
13.6 TestReport.java 134
第14章 一个简单的游戏 141
14.1 开发环节 147
第15章 编目 151
15.1 引言 151
15.2 第1种做法:Catalog.itemsMatching(query) 152
15.3 第2种做法:Query.matchesIn(catalog) 155
15.4 第3种做法:Process(catalog.data, query.data) 156
15.5 小结 157
第16章 计划游戏模拟器 159
16.1 第1部分:原始代码 160
16.2 代码(可在www.xp123.com/rwb在线得到) 160
16.3 Table.java 160
16.4 Background.java 164
16.5 Card.java 165
16.6 实战练习 168
16.7 第2部分:重新分配特性 170
16.8 去除重复、选择问题以及一些模糊性 173
16.9 第3部分:进一步推动代码 176
第17章 下一步何去何从 181
17.1 参考书 181
17.2 警告 181
17.3 必经历练 182
17.4 Web网站资源 183
第4部分 附录
附录A 所选问题的答案 187
附录B Java重构工具 217
附录C 重构逆处理 219
附录D 主要重构技术 221
参考文献 225
索引 227