阅读目录: 1.开篇介绍 2.不影响对象中的逻辑行为(枚举.常量.Entity子类来替代类型码) 3.影响对象中的逻辑行为(抽象出类型码,使用多态解决) 4.无法直接抽象出类型码(使用策略模式解决) 1]开篇介绍 说到类型码,我们都会很有印象,在某个Entity内部多多少少会出现一两个类型码来表示当前Entity在某个抽象角度属于哪一种层面,比如在EmployeeEntity中,基本上会有一个表示性别的Sex的属性,同时Sex属性的最终保存是在某个sex字段中的,它就是很典型的类型码元素:Sex…
名词:类型码 类型码的上层建筑 重构方法 1.使用子类代替类型码 2.使用状态/策略模式代替类型码 类中存在方法把某个字段当作条件,根据字段值的不同,进行不同的处理.(自定义概念)则这个字段叫做:类型码.(重构-改善既有代码的设计中的概念)这个方法叫做:类型码的上层建筑.(自定义概念)(这种判断方法不是绝对正确,但是一般可行,类型码是重构-改善既有代码的设计的概念,但是类型码的上层建筑是自定义概念) 例子1:Movie对象中存在影片类型字段,根据影片类型和租期计算金额的getCharge()方法…
前言 对于一个程序猿来讲怎样来最直接的来衡量他的技术能力和产出呢?我想最直观的作法是看他的代码编写能力,就拿我常常接触的一些程序猿来看,他们买了非常多技术重构类书籍.可是看完后代码编写能力并没有显著提高.有人说可以用代码review工具啊,可是像市面上的这些代码review工具.仅仅能帮助我们解决表面的bug和规范点.还无法帮助我们发现更深层次的设计问题. 以下我将结合<软件设计重构>这本书谈谈在进行代码review的时候.须要关注的哪些点. 一.技术债务 何为技术债务? 技术债务是有意或无意…
异步请求逻辑注入 工作中我们需要对异步请求的请求信息打印日志,但是又不能耦合在业务代码中打印.请设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的类型.URL.method.body.timestamp 等信息. /** injectBeforeAsyncSend.js @param {function(asynConfig)} beforeSend */ const injectBeforeAsyncSend = function(befo…
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢迎Star) 官方交流:添加DevUI小助手(devui-official) DevUIHelper插件:DevUIHelper-LSP(欢迎Star) 引言 有时用户希望将我们的报表页面分享到其他的渠道,比如邮件.PPT等,每次都需要自己截图,一是很麻烦,二是截出来的图大小不一. 有没有办法在页面…
代码重构几乎是每个程序员在软件开发中必须要不断去做的事情,以此来不断提高代码的质量.Android Stido(以下简称AS)以其强大的功能,成为当下Android开发工程师最受欢迎的开发工具,也是Android官方推荐使用的工具.如此优秀的工具,自然少不了要在代码重构这件事情上好好表现一把了.本文将通过代码演示,功能截图来详细介绍AS为代码重构提供的各项功能. 在AS的主菜单栏中有一项“Refactor”下拉菜单,点击该下拉菜单,会看到如下的界面,菜单中的每一项,都是为代码重构提供的一项自动实…
[从源码学设计]蚂蚁金服SOFARegistry之程序基本架构 0x00 摘要 之前我们通过三篇文章初步分析了 MetaServer 的基本架构,MetaServer 这三篇文章为我们接下来的工作做了坚实的铺垫. 本系列我们接着分析 Data Server,顺带会涉及一些 Session Server.因为 DataServer 和 MetaServer 代码实现和架构的基本套路类似,所以我们主要关心差异点和DataServer的特点. 本文会分析DataServer程序的基本架构. 0x01…
[从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 目录 [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 0x00 摘要 0x01 业务领域 1.1 SOFARegistry 总体架构 1.2 应用场景 1.2.1 单元化状态 1.2.2 内网通讯 1.2.3 Http协议 1.3 问题点 1.4 解决方案 1.5 阿里方案 1.6 实现问题 1.7 总述 0x02 基础封装 2.1 Channel 2.1.1 Java Channel 2.1.2 SOFA Ch…
[从源码学设计]蚂蚁金服SOFARegistry网络操作之连接管理 目录 [从源码学设计]蚂蚁金服SOFARegistry网络操作之连接管理 0x00 摘要 0x01 业务领域 1.1 应用场景 0x02 管理内容 2.1 连接管理 2.2 管理内容 0x03 Connection管理 3.1 Connection对象 3.2 Connection类定义 3.3 ConnectionFactory 3.4 MetaServerConnectionFactory 3.5 DataServerCon…
[从源码学设计]蚂蚁金服SOFARegistry之消息总线 目录 [从源码学设计]蚂蚁金服SOFARegistry之消息总线 0x00 摘要 0x01 相关概念 1.1 事件驱动模型 1.1.1 概念 1.1.2 应用环境 1.2 消息总线 0x02 业务领域 2.1 业务范畴 2.2 问题点 2.3 解决方案 0x03 EventCenter 3.1 目录结构 3.2 类定义 3.2.1 操作 3.2.2 执行 & 解耦 3.2.3 Listener列表 3.2.4 ArrayListMult…