定义

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

全能的上帝

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

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

是什么造就了上帝?

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

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

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

总结

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

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

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


http://www.taodudu.cc/news/show-2674458.html

相关文章:

  • java 基础 String str= “abc god 中国 java“ 反转每个单词 结果: “cba dog 国中
  • NS2中GOD的使用
  • python的合法命名,以下不是Python语言合法命名的是:A、MyGod5B、5MyGodC、_...
  • God.org单域环境攻略(一)
  • God.org单域环境攻略(二)
  • rails中引入god
  • God.org单域环境攻略(三)
  • Godray
  • GOD
  • Unity Shader-GodRay,体积光(BillBoard,Volume Shadow,Raidal Blur,Ray-Marching)
  • Linux自启进程管理工具,Linux进程管理工具--God-详解(1)-入门
  • 神的战争god无法显示服务器,神的战争GOD
  • godis之aof持久化
  • 学习笔记-God-Linux
  • Linux命令--god
  • cl.大圣归来.ml index.php,《西游记之再世妖王》提档清明节 大圣归来“毒打”万妖...
  • 西游记中金箍棒的来历和巨大威力
  • 2015程序猴的总结:不破楼兰终不还!
  • 交易感悟
  • 心理学和人工智能第一部分 心理学(四)—— 心理学的主要学派以及对人工智能的价值
  • 西游记中的第一神器是什么?
  • 33种化学原理动图, 让你秒懂化学反应原理!
  • HTML5CSS3:Day03 2D动画 3D动画 CSS3过渡
  • 33张你没看过的酷炫化学动图, 秒懂化学反应原理!
  • 运用深度学习进行文本生成
  • 计算机中职作文,中职作文题目
  • java 客户端和服务端加密,RSA 加密解密,客户端JS加密,服务端JAVA解密
  • 西游记笔记与想法(5)
  • TBC声望 恢复萨满 炼金 宏 附魔300-375
  • 喵哈哈村的魔法考试 Round #6 (Div.3) 题解

搬砖方法论:上帝对象(God Object)相关推荐

  1. 搬砖方法论:命令查询分离原则(Command-Query Separation,CQS原则)

    其原则主张方法应给分为两类: 查询:方法返回结果,但不改变任何系统状态(无副作用). 命令:方法没有结果,但会改变系统状态. 此原则带来的优点如下 查询类型的方法,对于调用者来讲不用在顾虑各个查询方法 ...

  2. Java:JVM+数据库(搬砖整理,侵权删文)

    Java:JVM+数据库(搬砖整理,侵权删文) 十一.JVM 1.Java内存区域 1.说一下 JVM 的主要组成部分及其作用? ​ JVM包含两个子系统和两个组件,两个子系统为Class loade ...

  3. 【攻略】如何用云服务器实现云搬砖

        本篇博文是从我的公众号转过来的,请尊重作者的劳动成果,未经允许请勿转载!值得说明的是,本篇博文主要适用于使用Python的同学. 目录 0 引言 1 本地PC(windows)如何远程连接云服 ...

  4. 985毕业的“搬砖人”,从“挂科废材”到程序员,这样的意外崛起,他到底经历了什么?

    背景 大学毕业那年,当同学们要么已然在其它的高校开始研究生生涯,要么在各大厂拿着月薪过万的工资,我只能目送一个个舍友收拾行李离开学校开始新的生活,独自一人呆在宿舍,准备等待 9 月开学后的补考. 我每 ...

  5. Java Nio 之高级搬砖工(FileChannel)二

    Java Nio 系列 Java Nio 之Buffer Java Nio 之直接内存 Java Nio 之高级搬砖工(FileChannel) 一 Java Nio 之高级搬砖工(FileChann ...

  6. 普通二/三本学校程序员(搬砖工)的出路?

    突然很羡慕那些985,211学校的学生,敲门砖是那么的响,机会是那么的多,路是那么的明确. 我上大学以来,努力的路就没停过,先是狂刷ACM,然后自学用cocos2d开发PC课件,然后赶上jsp,疯狂加 ...

  7. 搬砖之路----MusicPlayer 一个基于Vlc(2.0+)开发的android音乐播放器--浅析在android开发过程中播放器选择之路!

    前言 MusicPlayer 是一款基于vlc播放器开发的一个音乐播放器,你也可以理解为在此核心上的搬砖之路,核心的内容并不是我写的,因此在正式写blog之前,感谢那些vlc核心的开发人员让我用到这么 ...

  8. Java Nio 之高级搬砖工(FileChannel) 一

    Java Nio 系列 Java Nio 之Buffer Java Nio 之直接内存 Java Nio 之高级搬砖工(FileChannel) 一 前言  大家对搬砖都很熟悉吧:小绿和小蓝是搬砖工, ...

  9. Salesforce搬砖之功能概况

    Salesforce搬砖之功能概况 目标: 1,了解怎么登录Salesforce? 2,了解salesforce的功能模块(以lightning为样例)? 3,了解怎么使用sublime配置连接sal ...

  10. mac + iterm + 远程开发 快捷键和工具--戴上手套搬砖

    文章目录 @[toc] 前言: A.why 快捷键? B.why 工具? 一.mac 1.1 打开程序 1.2 触控技巧 1.3 键位修改 1.4 为 App 自定义快捷键的方法 1.5 常用快捷键 ...

最新文章

  1. Java开发中Websocket的技术选型参考
  2. 软件开发人员该如何深入理解自己的代码
  3. java 内部类_Java——内部类详解
  4. Vue表单类的父子组件数据传递示例_vue.js_脚本之家
  5. h3c 虚拟服务器 下一跳,H3CNE 312题和313题 直连路由静态路由的下一跳问题
  6. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...
  7. [转载] 中国象棋软件-引擎实现(二)棋局表示
  8. Eclipse中使用GIT将文件还原至上一版本
  9. 线上只执行一次的脚本编写注意事项
  10. 【技能】excel小技巧:利用宏制作工资条
  11. 11种基于ARM的嵌入式操作系统
  12. 用Delphi编写的一个上网助手
  13. 创建APPLEID 和申请成为开发者
  14. mysql 数据库健康巡检 报告
  15. 解决Vmware虚拟机startx进入图形界面卡退、白屏、黑屏的问题
  16. 对结对编程盟友的个人项目代码分析
  17. Intouch2020与施耐德PLC通讯
  18. 关于MyBatis框架的总结
  19. 2020PAKDD 阿里巴巴智能运维算法大赛TOP20 ——磁盘故障预测问题比赛思路、难点与问题总结
  20. 如何向面试官正确地提问?

热门文章

  1. 300句子与7000单词
  2. VS Code下搭建开发51单片机的环境(基于Embedded IDE)
  3. Python NLP 自然语言处理
  4. Referenced file contains errors解决
  5. sklearn包使用Extra-Trees和GridSearchCV完成成人死亡率预测
  6. 微软放弃数字图书馆计划
  7. STM32F03学习笔记之ADC配置(含DMA配置)
  8. Java开发企业微信群机器人发送markdown消息
  9. 字号与阿拉伯数字对应列表
  10. IDEA使用破解补丁激活