理想的方法长度不应该超过 4 行代码。—— Robert C Martin
常见的富血模型的类,往往包含了系统的行为。常见贫血的原因是:
- 缺乏抽象
- 过程代码
- 行为无法附着
- 未考虑复用
从技巧上来说,主要是提取、内联与移动 ,配合上 IDE 的重构功能和《重构:改善既有代码的设计》,那么剩下的事件就简单了。如果你缺乏这方面的技巧,欢迎与我们联系。
降低圈复杂度
圈复杂度过大的代码,容易出问题。也因此呢,作为重构的第一步,只需要找一个工具,然后消除即可。
手法:提取
提取分为:
- 提取参数
- 提取参数对象
- 提取变量
- 提取常量
- 提取方法
手法:内联
内联上的手法则是:
- 内联参数
- 内联变量
- 内联常量
- 内联方法
手法:移动
移动的关键不在于
方法移至其它类中
这里的 Ctrl + T 对应于老式的 IDEA 快捷键 Ctrl + Alt + Shift + T
- 将函数转为静态方法,以解除对外的依赖(可选)(Static Method,Ctrl + T)
- 将与函数职责无关的部分提取为函数的参数(Extract Functional Parameter,Ctrl + T)
- 将函数的参数提取为参数对象(Extract Parameter Object,Ctrl + T)
- 将函数移到参数对象中(Move Instance Method, F6)
完美。
标准:4 行的方法
偶然间在《修改代码的艺术:构建易维护代码的 9 条最佳实践》上看到了那句:『理想的方法长度不应该超过 4 行代码』。
所以,我找出了书架上的那本《代码整洁之道》,找到了出处 32 页。
函数不该有 100 行那么长,20 行封顶最佳。
然后就是 Kent Beck 的 Java/Swing 小程序四行的故事。但是,要保持一个好的习惯,寻找合适的机会去重构它。
下一节:我正在寻找一个合适的项目来演示如何重构。事实上,我已经找到了一些,但是它们的复杂度不太适合在线教学,所以我正在努力简化出一个可用的版本。