代码重构

理想的方法长度不应该超过 4 行代码。—— Robert C Martin

常见的富血模型的类,往往包含了系统的行为。常见贫血的原因是:

  1. 缺乏抽象
  2. 过程代码
  3. 行为无法附着
  4. 未考虑复用

从技巧上来说,主要是提取、内联与移动 ,配合上 IDE 的重构功能和《重构:改善既有代码的设计》,那么剩下的事件就简单了。如果你缺乏这方面的技巧,欢迎与我们联系。

降低圈复杂度

圈复杂度过大的代码,容易出问题。也因此呢,作为重构的第一步,只需要找一个工具,然后消除即可。

手法:提取

提取分为:

  1. 提取参数
  2. 提取参数对象
  3. 提取变量
  4. 提取常量
  5. 提取方法

手法:内联

内联上的手法则是:

  1. 内联参数
  2. 内联变量
  3. 内联常量
  4. 内联方法

手法:移动

移动的关键不在于

方法移至其它类中

这里的 Ctrl + T 对应于老式的 IDEA 快捷键 Ctrl + Alt + Shift + T

  1. 将函数转为静态方法,以解除对外的依赖(可选)(Static Method,Ctrl + T)
  2. 将与函数职责无关的部分提取为函数的参数(Extract Functional Parameter,Ctrl + T)
  3. 将函数的参数提取为参数对象(Extract Parameter Object,Ctrl + T)
  4. 将函数移到参数对象中(Move Instance Method, F6)

完美。

标准:4 行的方法

偶然间在《修改代码的艺术:构建易维护代码的 9 条最佳实践》上看到了那句:『理想的方法长度不应该超过 4 行代码』。

所以,我找出了书架上的那本《代码整洁之道》,找到了出处 32 页。

函数不该有 100 行那么长,20 行封顶最佳。

然后就是 Kent Beck 的 Java/Swing 小程序四行的故事。但是,要保持一个好的习惯,寻找合适的机会去重构它。

下一节:我正在寻找一个合适的项目来演示如何重构。事实上,我已经找到了一些,但是它们的复杂度不太适合在线教学,所以我正在努力简化出一个可用的版本。