目录 Chapter 1: Refactoring: A First Example / 重构,第一个示例1 The Starting Point / 起点 1 Comments on the Starting Program / 对此起始程序的评价 3 The First Step in Refactoring / 重构的第一步 5 Decomposing the statement Function / 分解statement方法 6 Status: Lots of Nested Functions / 进展:大量嵌套函数 22 Splitting the Phases of Calculation and Formatting / 拆分计算阶段与格式化阶段 24 Status: Separated into Two Files (and Phases) / 进展:分离到两个文件(和两个阶段) 31 Reorganizing the Calculations by Type / 按类型重组计算过程 34 Status: Creating the Data with the Polymorphic Calculator / 进展:使用多态计算器来提供数据 41 Final Thoughts / 结语 43 Chapter 2: Principles in Refactoring / 重构的原则 45 Defining Refactoring / 何谓重构 45 The Two Hats / 两顶帽子 46 Why Should We Refactor / 为何重构 47 When Should We Refactor / 何时重构 50 Problems with Refactoring / 重构的挑战 55 Refactoring, Architecture, and Yagni / 重构、架构和YAGNI 62
Refactoring and the Wider Software Development Process / 重构与软件开发过程 63 Refactoring and Performance / 重构与性能 64 Where Did Refactoring Come From / 重构起源何处 67 Automated Refactorings / 自动化重构 68 Going Further / 延展阅读 70 Chapter 3: Bad Smells in Code / 代码的坏味道 71 Mysterious Name / 神秘命名 72 Duplicated Code / 重复代码 72 Long Function / 过长函数 73 Long Parameter List / 过长参数列表 74 Global Data / 全局数据 74 Mutable Data / 可变数据 75 Divergent Change / 发散式变化 76 Shotgun Surgery / 霰弹式修改 76 Feature Envy / 依恋情结 77 Data Clumps / 数据泥团 78 Primitive Obsession / 基本类型偏执 78 Repeated Switches / 重复的switch 79 Loops / 循环语句 79 Lazy Element / 冗赘的元素 80 Speculative Generality / 夸夸其谈通用性 80 Temporary Field / 临时字段 80 Message Chains / 过长的消息链 81 Middle Man / 中间人 81 Insider Trading / 内幕交易 82 Large Class / 过大的类 82 Alternative Classes with Different Interfaces / 异曲同工的类 83 Data Class / 纯数据类 83 Refused Bequest / 被拒绝的遗赠 83 Comments / 注释 84 Chapter 4: Building Tests / 构筑测试体系 85 The Value of Self-Testing Code / 自测试代码的价值 85 Sample Code to Test / 待测试的样例代码 87 A First Test / 第一个测试 90 Add Another Test / 再添加一个测试 93 Modifying the Fixture / 修改测试夹具 95 Probing the Boundaries / 探测边界条件 96 Much More Than This / 测试远不止如此 99 Chapter 5: Introducing the Catalog / 介绍重构名录 101 Format of the Refactorings / 重构的记录格式 101 The Choice of Refactorings / 挑选重构的依据 102 Chapter 6: A First Set of Refactorings / 第一组重构 105 Extract Function / 提炼函数 106 Inline Function / 内联函数 115 Extract Variable / 提炼变量 119 Inline Variable / 内联变量 123 Change Function Declaration / 改变函数声明 124 Encapsulate Variable / 封装变量 132 Rename Variable / 变量改名 137 Introduce Parameter Object / 引入参数对象 140 Combine Functions into Class / 函数组合成类 144 Combine Functions into Transform / 函数组合成变换 149 Split Phase / 拆分阶段 154 Chapter 7: Encapsulation / 封装 161 Encapsulate Record / 封装记录 162 Encapsulate Collection / 封装集合 170 Replace Primitive with Object / 以对象取代基本类型 174 Replace Temp with Query / 以查询取代临时变量 178 Extract Class / 提炼类 182 Inline Class / 内联类 186 Hide Delegate / 隐藏委托关系 189 Remove Middle Man / 移除中间人 192 Substitute Algorithm / 替换算法 195 Chapter 8: Moving Features / 搬移特性 197 Move Function / 搬移函数 198 Move Field / 搬移字段 207 Move Statements into Function / 搬移语句到函数 213 Move Statements to Callers / 搬移语句到调用者 217 Replace Inline Code with Function Call / 以函数调用取代内联代码 222 Slide Statements / 移动语句 223 Split Loop / 拆分循环 227 Replace Loop with Pipeline / 以管道取代循环 231 Remove Dead Code / 移除死代码 237 Chapter 9: Organizing Data / 重新组织数据 239 Split Variable / 拆分变量 240 Rename Field / 字段改名 244 Replace Derived Variable with Query / 以查询取代派生变量 248 Change Reference to Value / 将引用对象改为值对象 252 Change Value to Reference / 将值对象改为引用对象 256 Chapter 10: Simplifying Conditional Logic / 简化条件逻辑 259 Decompose Conditional / 分解条件表达式 260 Consolidate Conditional Expression / 合并条件表达式 263 Replace Nested Conditional with Guard Clauses / 以卫语句取代嵌套条件表达式 266 Replace Conditional with Polymorphism / 以多态取代条件表达式 272 Introduce Special Case / 引入特例 289 Introduce Assertion / 引入断言 302 Chapter 11: Refactoring APIs / 重构API 305 Separate Query from Modifier / 将查询函数和修改函数分离 306 Parameterize Function / 函数参数化 310 Remove Flag Argument / 移除标记参数 314 Preserve Whole Object / 保持对象完整 319 Replace Parameter with Query / 以查询取代参数 324 Replace Query with Parameter / 以参数取代查询 327 Remove Setting Method / 移除设值函数 331 Replace Constructor with Factory Function / 以工厂函数取代构造函数 334 Replace Function with Command / 以命令取代函数 337 Replace Command with Function / 以函数取代命令 344 Chapter 12: Dealing with Inheritance / 处理继承关系 349 Pull Up Method / 函数上移 350 Pull Up Field / 字段上移 353 Pull Up Constructor Body / 构造函数本体上移 355 Push Down Method / 函数下移 359 Push Down Field / 字段下移 361 Replace Type Code with Subclasses / 以子类取代类型码 362 Remove Subclass / 移除子类 369 Extract Superclass / 提炼超类 375 Collapse Hierarchy / 折叠继承体系 380 Replace Subclass with Delegate / 以委托取代子类 381 Replace Superclass with Delegate / 以委托取代超类 399 Bibliography / 参考文献 405
以下为对购买帮助不大的评价