搬砖方法论:上帝对象(God Object)

定义

在面向对象编程领域,上帝对象(God object)是一个了解过多或者负责过多的对象。 上帝对象是 反模式(anti-pattern) 和 代码异味(code smell)的例子。

全能的上帝

笔者曾在某个项目遇到了这种"上帝"工具类HelperTools,里面涵盖的功能真是五花八门,UI快捷设置、时间戳的各种扩展、数据的验证、对应的业务逻辑等等。

犹如工具类的跳蚤市场,新旧API集聚于此,少则几千行,多则上万,里面的工具函数真是的是无所不知,无所不能,但是想要驾驭上帝,确实太难了~

是什么造就了上帝?

出现这种问题基本都是一下几点

  • 工具类的职责没有统一的规划
  • 缺少公共组件的维护
  • 向工具类中添加函数无限制

最重要的原因是公共组件并没有受到重视,慢慢就会变成整个项目中随意丢弃烂代码的垃圾站。

总结

工具类中的API变动应该是缓慢的,判断是否应该向工具类中添加函数可从一下几条进行判断

  • 不涉及具体模块的业务逻辑
  • 通用性强
  • 可写成扩展方法
  • 其函数所需要的依赖是稳定性依赖
  • 原始工具类中的职责与其相关
  • 其复杂性不能通过简单几行代码代替

更多文章详见主页:www.aihailan.com

发表评论