java 参数命名冲突_Java中的命名参数

java 参数命名冲突

创建具有许多参数的方法是一个主要的缺点。 每当需要创建这样的方法时,就在空气中闻一闻:这是代码的味道。 强化单元测试,然后进行重构。 没有借口,没有屁股。 重构! 使用构建器模式,甚至更好地使用Fluent API。 对于后者,注释处理器的影响可能会有很大帮助。

综上所述,当我们面对现实生活而不是我们在业余爱好项目中可以遵循的理想主义模式时,我们可能会达到人生的关键。 遗留下来的企业库怪物具有数以千计的参数方法,并且您没有权限,时间,勇气或兴趣(对您不利)来修改……操作……对其进行重构。 如果有时间,您可以创建一个构建器作为外观,将丑陋的API隐藏在其后。 创建构建器仍然是您甚至在编写之前就必须进行单元测试的代码(您知道:TDD),而您可能没有时间。 调用怪异方法的代码也已经存在,您只需对其进行维护即可。

您仍然可以做一些小技巧。 它可能并不完美,但是仍然有些完美。

假设有一个方法:

public void monster(String contactName, String contactId, String street, String district,...Long pT){
...
}

第一件事是在调用者的位置明智地选择局部变量。 可惜已经选择了名称,您可能不想更改它。 可能有某些原因,例如遵循了应用程序范围的命名约定,即使您的样式不是这样,也可能有意义。 因此调用:

monster(nm, "05300" + dI, getStrt(), d, ... , z+g % 3L );

不完全是我在说的。 这就是您所拥有的,您可以使用它,也可以在代码中插入新变量:

String contactName = nm;
String contactId = "05300" + dI;
String street = getStrt();
Street district = d;
...
Long pT = z+g % 3L;
monster(contactName, contactId, street, district, ... ,pT );

或者甚至可以用Java中不常见的方式编写它,尽管完全合法:

String contactName, contactId, street, district;
...
Long pT;
monster(contactName = nm, contactId = "05300" + dI, street = getStrt(), district = d, ... ,pT = z+g % 3L );

好吃吗 要看。 我不会在口味上争论。 如果您不喜欢那样,还有另一种方法。 您可以定义辅助方法和非常简单的静态方法:

static <T> T contactName(T t){ return T;}
static <T> T contactId(T t){ return T;}
static <T> T street(T t){ return T;}
static <T> T district(T t){ return T;}
...
static <T> T pT(T t){ return T;}monster(contactName(nm), contactId("05300" + dI), street(getStrt()(, district(d), ... ,pT(z+g % 3L) );

该代码仍然很丑陋,但是在调用者处更具可读性。 你甚至可以收集静态方法为工具类或接口在Java中8的情况下,命名为喜欢withusingto等等。 您可以将它们静态导入到您的代码中,并进行如下一些方法调用:

doSomething(using(someParameter), with(someOtherParameter), to(resultStore));

如果您回答了最后一个问题,那么所有这些都将使您感到跷:参数pT是什么*

* “ whatever”(您可以随意替换为其他单词)

翻译自: https://www.javacodegeeks.com/2014/09/named-parameters-in-java.html

java 参数命名冲突

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

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

相关文章

react获取全局_使用react hooks实现的简单全局状态管理

注意,此代码存储库已被弃用,不会再更新维护了.Note that this code repository has been deprecated and will not be updated and maintained.react-simple-global-state-store-hook基于react hooks 和EventTarget 实现的极简全局状态管理 库&#xff0c;可以跨组件共享全局状…

职业规划测试软件,生涯规划常用测试工具

原标题&#xff1a;生涯规划常用测试工具认识自己测试生涯规划关于生涯规划的几个测试上周我们说到中学生很有必要进行生涯规划&#xff0c;在进行生涯规划前&#xff0c;我们需要对自己有一个更清晰、更全面的认识&#xff0c;随着心理学的发展&#xff0c;很多认识自我的测试…

使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第一部分

在这个分为三部分的系列中&#xff0c;我将演示如何使用SoapUI API工具来调用安全的WCF SOAP服务。 第一篇文章将着重于创建将要测试的系统的服务。 第二篇文章将介绍在基本身份验证机制保护的情况下调用它所需的步骤。 在最后一部分中&#xff0c;我将对初始服务稍作更改&…

计算机动画分为关键帧动画和,一个最简单的动画最少有几个关键帧

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。一个最简单的动画至少有两个关键帧&#xff0c;两个关键帧中必须是元件&#xff0c;而且必须是同一个元件。要创建使组合体或文字发生颜色渐变的动画&#xff0c;必须先将它们转换为…

python+robotframework_python+robot framework接口自动化测试

转载&#xff1a;http://www.cnblogs.com/nzg-noway/p/6651957.htmlpythonrequests实现接口的请求前篇已经介绍&#xff0c;还有不懂或者疑问的可以访问目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出&#xff0c;通过关键字的封装实现一定意义上的脚本与用例的脱离…

自动装箱和拆箱_自动装箱

自动装箱和拆箱自Java 1.5以来&#xff0c;所有Java开发人员都可以使用自动装箱功能。嗯&#xff0c;我可能太乐观了。 至少所有开发人员都应该可以使用自动装箱。 毕竟&#xff0c;在ORACLE页面上有一个很好的教程。 自动装箱是指Java编译器在需要时自动从原始类型创建用于创…

计算机网络标准体系,计算机网络标准体系结构实验报告.doc

华北电力大学实 验 报 告||试验名称 计算机网络体系结构试验课程名称 计算机网络体系结构||专业班级&#xff1a;网络1202 学生姓名&#xff1a;学 号&#xff1a; 成 绩&#xff1a;指导老师&#xff1a;李丽芬 试验日期&#xff1a;.12.18一、试验目标和要求1&#xff0e;将网…

配置中文_星球大战:战机中队配置需求公布 支持中文

近日《星球大战》系列新作《星球大战&#xff1a;战机中队》公布&#xff0c;该作采用寒霜引擎打造&#xff0c;支持中文。游戏将于2020年10月3日发售&#xff0c;预购价格为238元&#xff0c;登陆Xbox One/PS4/PC(Steam/Origin/Epic)平台&#xff0c;有单人和多人模式&#xf…

为什么在生产中进行硒自动化测试对于您的下一个版本至关重要?

您是否认为仅仅是因为您的Web应用程序在过渡环境中以鲜艳的色彩通过了&#xff0c;您的生产环境也将是相同的吗&#xff1f; 您可能需要重新考虑&#xff01; 特别是&#xff0c;如果我们指的是跨浏览器测试 &#xff0c;则需要确保跨各种操作系统&#xff0c;运行在不同操作系…

手机usb共享计算机网络连接,如何将手机wifi网络通过USB共享给电脑?小编教你共享方法...

曾经就有过这样的情况&#xff0c;家里突然断网了&#xff0c;这时又需要打开电脑接收文件&#xff0c;或是需要在线编辑公众号的文章&#xff0c;着急得很&#xff0c;这时电脑没有网络怎么办呢&#xff1f;能不能使用手机的流量&#xff0c;来让电脑连网呢&#xff1f;有时候…

为全局变量赋值_实例分析如何远离漫天飞舞的全局变量

前篇《由static来谈谈模块封装》基本实现了对外隐藏属性&#xff0c;隐藏局部模块函数&#xff0c;开放接口的功能。对于这个话题还有些点没有深入探讨&#xff1a;为什么要这样做&#xff1f;以及这样做的好处。或许很多刚刚开始用C或者其他面向对象编程语言(比如C)的小伙伴们…

数据库班级字段怎么定义名称_班级名称

数据库班级字段怎么定义名称在Java中&#xff0c;每个类都有一个名称。 类位于包中&#xff0c;这使我们程序员可以一起工作&#xff0c;避免名称冲突。 我可以命名我的班级A &#xff0c;也可以命名您的班级A &#xff0c;只要它们位于不同的程序包中&#xff0c;它们可以很好…

计算机指令取决,不同的计算机,其指令不同,这主要取决于什么?

不同的计算机&#xff0c;其指令系统也不同&#xff0c;这主要取决于所用的CPU。1、CPU指中央处理器&#xff0c;是一块超大规模的集成电路&#xff0c;是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。2、程…

python内存管理方法_Python 内存管理大揭秘

前言语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理&#xff0c;还是Java的垃圾回收&#xff0c;都成为语言最重要的特征。这里以Python语言为例子&#xff0c;说明一门动态类型的、面向对象的语言的内存管理方式。对象的内存使用…

Kubernetes集群上的Apache Ignite和Spring第1部分:Spring Boot应用程序

在之前的一系列博客中&#xff0c;我们在Kubernetes集群上启动了一个Ignite集群。 在本教程中&#xff0c;我们将使用先前在Spring Boot Application上创建的Ignite集群。 让我们使用Spring Boot创建我们的项目。 Spring Boot应用程序将连接到Ignite集群。 让我们添加依赖项…

计算机VB整除,【原创】VB中的整除运算和转换函数

前言&#xff1a;【关于四舍五入】——实际上是相对小数部分<0.5 舍&#xff1b;0.5 看整数部分&#xff0c;若为奇数则进&#xff0c;若为偶数则舍&#xff1b;>0.5 进整除运算“\”作用&#xff1a;用于对两个数进行除法运算并返回一个整数例如&#xff1a;18\53 …

栈空间_Linux中的进程栈和线程栈

1. 进程栈进程栈是属于用户态栈&#xff0c;和进程虚拟地址空间 (Virtual Address Space) 密切相关。那我们先了解下什么是虚拟地址空间&#xff1a;在 32 位机器下&#xff0c;虚拟地址空间大小为 4G。这些虚拟地址通过页表 (Page Table) 映射到物理内存&#xff0c;页表由操作…

mockito_Mockito 101

mockitoMockito是一个模拟框架&#xff0c;可让您使用简洁的API编写漂亮的测试。 它偏向于最小的规格&#xff0c;使不同的行为看起来有所不同&#xff0c;并显示清晰的错误消息。 创造嘲弄 要使用Mockito创建模拟&#xff0c;只需使用Mock注释模拟&#xff0c;然后调用Mockit…

csgo显示服务器失败,csgo服务器失败

csgo服务器失败 内容精选换一换您可以通过“应用管理”页面的应用列表&#xff0c;快速查看应用状态&#xff0c;及相关异常信息&#xff0c;如图1所示。包括&#xff1a;应用状态&#xff1a;即图1中的①应用异常信息&#xff1a;即图1中的②云服务器异常信息&#xff1a;即图…

mysql多表成绩查询_MySQL多表数据记录查询(一)

1&#xff0e;交叉连接SQL语句的语法结构如下&#xff1a;select * from表1 cross join 表2;或Select * from表1&#xff0c;表2;2.内连接SQL语句有两种表示形式&#xff1a;使用inner join 语法结构如下&#xff1a;Select表达式1&#xff0c;表达式2&#xff0c;...&#xff…