《重构:改善既有代码的设计》摘抄

原创
2020/06/11 11:24
阅读数 32

重构帮助你更快地开发程序

  • 我不是个伟大的程序员,我只是个有着一些优秀习惯的好程序员
  • 事不过三,三则重构
  • 如果用某种方式来设计,添加特性会简单得多。
  • 结对编程

我们希望程序:

  1. 容易阅读
  2. 所有相同的业务逻辑都只在唯一地点指定
  3. 新的改动不会危及现有行为
  4. 尽可能简单表达条件逻辑

计算机科学是这样一门科学:它相信所有问题都可以通过增加一个中间层来解决。—— Dennis DeBruler

中间层的价值如下:

  1. 允许逻辑共享
  2. 分开解释意图和实现
  3. 隔离变化
  4. 封装条件逻辑

代码的坏味道

  1. Duplicated Code
  2. Long Method
  3. Large Class
  4. Long Parameter List
  5. Divergent Change 发散式变化
  6. Shotgun Surgery 霰弹式修改
  7. Feature Envy 依恋情结
  8. Data Clumps 数据泥团
  9. Primitive Obsession 基本类型偏执
  10. Switch Statements
  11. Parallel Inheritance Hierarachies 平行继承体系
  12. Lazy Class 冗余类
  13. Speculative Generality 夸夸其谈未来性
  14. Temporary Field 令人迷惑的暂时字段
  15. Message Chains 过度耦合的消息链
  16. Middle Man 中间人
  17. Inappropriate Intimacy 狎昵关系
  18. Alternative Classes with Diffenrent Interfaces 异曲同工类
  19. Incomplete Library Class 不完美的库类
  20. Data Class 纯数据类
  21. Refused Bequest 被拒绝的遗赠
  22. Comments 过多的注释

构筑测试体系

确保所有测试都完全自动化,让它们检查自己的测试结果。

重构TODO列表

每个重构任务应该需要:

  1. 名称
  2. 简短概要
  3. 动机
  4. 实现步骤
  5. 范例:以一个十分简单的例子说明此重构如何运作

在对象之间搬移特性

  1. Move Method 在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或者是将旧函数完全移除。
  2. Move Field 迁移属性
  3. Extract Class 提炼类:建立一个新类,将相关的字段和函数从旧类搬移到新类。
  4. Inline Class 将类内联化
  5. Hide Delegate 隐藏“委托关系”
  6. Remove Middle Man 移除中间人
  7. Introduce Foreign Method 引入外加函数:在客户类中建立一个函数,并以第一参数形式传入一个服务类实例。(尽量提前设计好参数,减少参数的变更,增强参数的普适性)
  8. Introduce Local Extension 引入本地扩展
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部