搬砖方法论:上帝对象(God Object)
定义
在面向对象编程领域,上帝对象(God object)是一个了解过多或者负责过多的对象。 上帝对象是 反模式(anti-pattern) 和 代码异味(code smell)的例子。
全能的上帝
笔者曾在某个项目遇到了这种"上帝"工具类Helper
和Tools
,里面涵盖的功能真是五花八门,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)相关推荐
- 搬砖方法论:命令查询分离原则(Command-Query Separation,CQS原则)
其原则主张方法应给分为两类: 查询:方法返回结果,但不改变任何系统状态(无副作用). 命令:方法没有结果,但会改变系统状态. 此原则带来的优点如下 查询类型的方法,对于调用者来讲不用在顾虑各个查询方法 ...
- Java:JVM+数据库(搬砖整理,侵权删文)
Java:JVM+数据库(搬砖整理,侵权删文) 十一.JVM 1.Java内存区域 1.说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loade ...
- 【攻略】如何用云服务器实现云搬砖
本篇博文是从我的公众号转过来的,请尊重作者的劳动成果,未经允许请勿转载!值得说明的是,本篇博文主要适用于使用Python的同学. 目录 0 引言 1 本地PC(windows)如何远程连接云服 ...
- 985毕业的“搬砖人”,从“挂科废材”到程序员,这样的意外崛起,他到底经历了什么?
背景 大学毕业那年,当同学们要么已然在其它的高校开始研究生生涯,要么在各大厂拿着月薪过万的工资,我只能目送一个个舍友收拾行李离开学校开始新的生活,独自一人呆在宿舍,准备等待 9 月开学后的补考. 我每 ...
- Java Nio 之高级搬砖工(FileChannel)二
Java Nio 系列 Java Nio 之Buffer Java Nio 之直接内存 Java Nio 之高级搬砖工(FileChannel) 一 Java Nio 之高级搬砖工(FileChann ...
- 普通二/三本学校程序员(搬砖工)的出路?
突然很羡慕那些985,211学校的学生,敲门砖是那么的响,机会是那么的多,路是那么的明确. 我上大学以来,努力的路就没停过,先是狂刷ACM,然后自学用cocos2d开发PC课件,然后赶上jsp,疯狂加 ...
- 搬砖之路----MusicPlayer 一个基于Vlc(2.0+)开发的android音乐播放器--浅析在android开发过程中播放器选择之路!
前言 MusicPlayer 是一款基于vlc播放器开发的一个音乐播放器,你也可以理解为在此核心上的搬砖之路,核心的内容并不是我写的,因此在正式写blog之前,感谢那些vlc核心的开发人员让我用到这么 ...
- Java Nio 之高级搬砖工(FileChannel) 一
Java Nio 系列 Java Nio 之Buffer Java Nio 之直接内存 Java Nio 之高级搬砖工(FileChannel) 一 前言 大家对搬砖都很熟悉吧:小绿和小蓝是搬砖工, ...
- Salesforce搬砖之功能概况
Salesforce搬砖之功能概况 目标: 1,了解怎么登录Salesforce? 2,了解salesforce的功能模块(以lightning为样例)? 3,了解怎么使用sublime配置连接sal ...
- mac + iterm + 远程开发 快捷键和工具--戴上手套搬砖
文章目录 @[toc] 前言: A.why 快捷键? B.why 工具? 一.mac 1.1 打开程序 1.2 触控技巧 1.3 键位修改 1.4 为 App 自定义快捷键的方法 1.5 常用快捷键 ...
最新文章
- Java开发中Websocket的技术选型参考
- 软件开发人员该如何深入理解自己的代码
- java 内部类_Java——内部类详解
- Vue表单类的父子组件数据传递示例_vue.js_脚本之家
- h3c 虚拟服务器 下一跳,H3CNE 312题和313题 直连路由静态路由的下一跳问题
- mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...
- [转载] 中国象棋软件-引擎实现(二)棋局表示
- Eclipse中使用GIT将文件还原至上一版本
- 线上只执行一次的脚本编写注意事项
- 【技能】excel小技巧:利用宏制作工资条
- 11种基于ARM的嵌入式操作系统
- 用Delphi编写的一个上网助手
- 创建APPLEID 和申请成为开发者
- mysql 数据库健康巡检 报告
- 解决Vmware虚拟机startx进入图形界面卡退、白屏、黑屏的问题
- 对结对编程盟友的个人项目代码分析
- Intouch2020与施耐德PLC通讯
- 关于MyBatis框架的总结
- 2020PAKDD 阿里巴巴智能运维算法大赛TOP20 ——磁盘故障预测问题比赛思路、难点与问题总结
- 如何向面试官正确地提问?