变色龙功能

在《神秘博士》中,卡梅利恩(Kamelion)角色是可以采取任何形式的机器人。 据称,他们使用的物理道具非常麻烦,只有其创建者才能理解,而该创建者并没有帮助纠正它。

因此,Chamelion功能...

考虑以下代码:

 public List<Document> getAllDocuments(Request request, int userId, String field) { Query q = createQueryFrom(request); switch (field) { case "title" : q.addCriteria(Criteria.where( "title" ).is(request.getTitle()); break ; case "name" : q.addCriteria(Criteria.where( "name" ).is(request.getName()); break ;  default : throw new IllegalArgumentException( "Bad field: " + field); } return q;  } 

上面有很多事情。 让我们来了解它。 出现了某种请求,我们可以从中进行基本查询。 然后,根据调用方提供的字段,我们使用该字段向查询中添加条件,并将操作数从请求中拉出。

最重要的是,如果调用者提供了一个我们不知道如何查询的字段,我们就必须抛出一个错误。

这个功能怎么了?

我会告诉你怎么了...

这不是功能。 这是两个功能。 另请参阅两种音乐 。

调用代码可能如下所示:

 // one call site  getAllDocuments(request, id, "title" );  // another  getAllDocumetns(request, id, "name" ); 

我们正在使用字符串选择来控制单个函数的一半流程。

比这更糟的是……当某些调用者发明一个我们从未听说过的字符串时,我们需要抛出一个异常。

让我们再重构一下:

 public List<Document> getAllDocumentsByTitle(Request request, int userId) { Query q = createQueryFrom(request); q.addCriteria(Criteria.where( "title" ).is(request.getTitle()); return q;  }  public List<Document> getAllDocumentsByName(Request request, int userId) { Query q = createQueryFrom(request); q.addCriteria(Criteria.where( "name" ).is(request.getName()); return q;  } 

通过将其分为两个功能,它可以自我记录,易于遵循并且不需要处理流氓字符串。 它可能会稍微快一点,但这并不是真正的主要驱动力。

但是重复呢?

我怀疑变色龙功能的一种驱动程序是减少代码重复的错误尝试。 请注意,以上示例提供了在两个函数( createQueryFrom)中重用的代码示例,但每个函数中都有独立的逻辑。 它不是重复的代码。

我从中提取的示例可能最初有多行代码,现在我们看到createQueryFrom可能引起了对重复的恐惧,这反过来又造成了怪物。 坚持不懈地重构以减少正确的重复,这样的事情就不会发生。

翻译自: https://www.javacodegeeks.com/2019/08/chameleon-function.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCM复用设备的安装和使用注意事项

PCM设备在通信系统中的是一种很常用的设备&#xff0c;但是不少用户在购买了PCM设备后&#xff0c;都不懂怎么去安装使用PCM复用设备。下面&#xff0c;飞畅科技的小编来为大家详细介绍下PCM复用设备的安装和使用注意事项&#xff0c;一起来看看吧&#xff01; PCM复用设备的安…

PCM复用设备功能介绍

PCM设备功能主要分为四大部分&#xff1a;接入与复用、时隙交叉、2M线路保护、接口测试功能。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备的功能&#xff0c;一起来看看吧&#xff01; PCM复用功能&#xff1a; 用户业务接入与复用是PCM设备最基本的功能&#xff…

对象和索引流

我本来要写一篇关于如何将流与每个元素的索引混合的文章&#xff0c;但是Baeldung上的人们已经很好地涵盖了这个主题 &#xff01; 鉴于我是他们编辑团队的一员&#xff0c;我为他们/我们感到自豪。 有趣的是&#xff0c;特别是Streams中的Java函数式编程如何使我们脱离了一些…

PCM复用设备主要传输什么业务?

PCM即脉冲编码调制&#xff0c;在通信系统中完成将语音信号数字化功能。PCM的实现主要包括三个步骤完成&#xff1a;抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。 1、 抽样&#xff1a;所谓抽样&#xff0c;就是对模拟信号进行周期性扫描&…

Pcm设备2M通道,E1的基础知识介绍

Pcm设备2M通道在业内常简述为E1&#xff0c;E1这个词在通信行业起着非常重要的作用&#xff0c;相信刚接触这个词的人必定会感到陌生。接下来就由飞畅科技的小编来为您详细的介绍一下E1的基础知识。 一、E1概述 E1是ITU-T制定并由欧洲邮政与电信协会&#xff08;CEPT&#xff…

数据结构栈的知识_数据知识栈

数据结构栈的知识并发不适合胆小者 我们都知道并发编程很难正确实现。 这就是为什么在执行线程任务之后要进行大量的设计和代码审查会议。 您永远不会将并发问题分配给经验不足的开发人员。 仔细分析问题空间&#xff0c;提出设计&#xff0c;并记录和审查解决方案。 这就是通…

PCM设备E1保护切换功能介绍

脉冲编码调制&#xff08;PulseCodeModulation&#xff09;&#xff0c;简称PCM。是对连续变化的模拟信号进行抽样、量化和编码产生的数字信号。PCM的优点就是音质好&#xff0c;缺点就是体积大。PCM可以提供用户从2M到155M速率的数字数据专线业务&#xff0c;也可以提供话音、…

PCM设备的作用,为什么要选用PCM设备?

PCM设备在通信系统中是利用E1&#xff08;2M&#xff09;线路进行传输多种业务数据的基群设备。但是不少用户在开始使用之前&#xff0c;并不能确定PCM能否满足他的需求&#xff0c;也不清楚有PCM这样的一个名词。接下来飞畅科技的小编来为大家介绍下PCM设备的作用&#xff0c;…

RS485光纤中继器有哪些优缺点?

信号在传输过程中会不断衰减&#xff0c;为了不让信号衰减对通信产生影响&#xff0c;产生了中继器。仅做放大信号用&#xff0c;把信号传导偏远的地方。 中继器又被称为转换器或放大器&#xff0c;执行物理层协议&#xff0c;负责第一层&#xff08;物理层&#xff09;的数据中…

485转换器产品功能特点及技术参数介绍

485转换器主要的作用是将单端的RS-232信号转换为平衡差分的RS-485或RS-422信号。RS-485、RS-422自动识别功能&#xff0c;使用更加简单。接下来就由飞畅科技的小编来为大家详细介绍下485转换器的产品功能特点及技术参数&#xff0c;一起来看看吧&#xff01; 485转换器产品特点…

无浪费编码

本文介绍了如何通过减少软件堆栈中的浪费来高效解决有意义的事件处理问题。 Java通常被视为无法在低内存环境中高效运行的内存猪。 目的是证明许多人认为不可能的事情&#xff0c;有意义的java程序几乎可以在没有内存的情况下运行。 示例流程 在Java的单个线程上&#xff0c;…

485光纤转换器产品分类介绍

485转换器用于点对点、点对多点通讯、工业控制自动化、道路交通控制自动化、智能卡、考勤、门禁、售饭系统、工业集散分布系统、闭路监控、安防系统、POS系统、楼宇自控系统、自助银行系统。接下来就由飞畅科技的小编来为大家详细介绍下485转换器的分类&#xff0c;一起来看看吧…

RS485集线器知识详解

集线器的英文名称就是我们通常见到的“HUB”&#xff0c;英文“HUB”是“中心”意思&#xff0c;集线器的主要功能是对接收到的信号进行再生整形放大&#xff0c;以扩大网络的传输距离&#xff0c;同时把所有节点集中在以它为中心的节点上。 集线器工作原理 它工作于OSI参考模…

rs485转rs232串口转换器常见的故障剖析

在实际应用中&#xff0c;rs485串口、rs232串口可能会用于同一个传输线路上&#xff0c;但这两个接口的电气特性不一致&#xff0c;数据不能从这两个串口中相互传输或是rs232串口功能不足需要额外用到rs485串口&#xff0c;这两种情况都可以使用rs485转换器。 rs485转rs232串口…

TDMoverIP是什么?tdmoverip产品特性介绍

tdmoverip伪线路仿真产品&#xff0c;也称为IP电路仿真器或反向网桥。接下来就由飞畅科技的小编来为大家详细讲解下TDMoverIP及其产品特性&#xff0c;一起来看看吧&#xff01; tdmoverip简介 该系列基于TDM over IP技术&#xff0c;实现端到端电路仿真(PWE3)&#xff0c;符合…

PCM复用设备和PDH设备的区别介绍

首先PCM设备和PDH设备是完全不同的两者设备。PCM是综合业务接入设备&#xff0c;PDH设备是光传输设备。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备和PDH设备的区别&#xff0c;一起来看看吧&#xff01; 数字信号是对连续变化的模拟信号进行抽样、量化和编码产生…

E1 PCM复用设备能当程控交换机用吗?

E1 PCM复用设备能当程控交换机用吗&#xff1f;这个问题在平时与用户沟通中发现&#xff0c;发现有不少用户认为E1 PCM复用设备可以当程控交换机使用&#xff0c;不仅能实现电话线远端延伸&#xff0c;还可以实现电话机交换功能。 其实这个观点是错误的&#xff0c;E1 PCM复用…

关于“最终”的最终决定

在Java中&#xff0c;过度使用final感觉就像是SHOUTING。 在很多时候它已经过时且不合适。 Java和JavaScript 这主要是关于Java中的final关键字&#xff0c;但是我对JavaScript中与之对应的const看法略有变化。 我可以认为const是一件好事&#xff0c;而final是一件坏事&#…

PCM设备在雷达通信系统应用

PCM设备系统是目前国内企业最常用的综合接入通信设备&#xff0c;PCM设备所具优势众多&#xff0c;因此它能成为目前企业最常用的通信传输接入设备之一&#xff0c;而且在类似雷达通信系统等重要行业中广泛应用着。 PCM设备利用标准的E1数据传输通道&#xff0c;采用PCM制式&a…

ejb的maven_针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块

ejb的maven从前面的部分恢复 第1部分 第2部分 我们在第三部分继续介绍&#xff0c;我们已经有一个父pom&#xff0c;并且已经为我们的war模块定义了pom。 在我们的原始设置中&#xff0c;我们定义了我们的应用程序将包含一个ejb jar形式的服务jar。 这是我们的Enterprise Jav…