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 参数命名冲突

java 参数命名冲突_Java中的命名参数相关推荐

  1. java具名参数_Spring JDBC 框架中, 绑定 SQL 参数的另一种选择:具名参数(named parameter)...

    使用spring的jdbcTemplate-----使用具名参数 在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限制,定位参数的问题在于,一旦参数的位置发生变化,必须改变参数的绑定,在S ...

  2. java方法命名规则_java中方法的命名规范

    java中方法的命名规范 发布时间:2020-06-25 19:52:51 来源:亿速云 阅读:167 作者:Leah 这期内容当中小编将会给大家带来有关java中方法的命名规范,文章内容丰富且以专业 ...

  3. java 全局变量 命名规则_Java 基础 运算符 命名规则 变量 循环

    1.程序: 一组指示计算机执行行动或坐车判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上. 2.软件 与计算机操作系统有关的计算机程序,规程.规则,以及可能有的文件,文档及数据 3.软 ...

  4. java 不定参数方法_java中不定长参数的使用方法

    java中不定长参数的使用方法 不定长参数方法的语法如下:返回值 方法名(参数类型...参数名称) 在参数列表中使用"..."形式定义不定长参数,其实这个不定长参数a就是一个数组, ...

  5. java 变参 使用数组调用_java中的可变参数使用方法

    java中的可变参数使用方法 可变参数时Java 1.5新增的方法,可变参数方法接收0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到 ...

  6. java传参数的方法_java中方法的参数传递机制

    无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...

  7. java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

  8. java 不定参数_java中不定长参数的实例用法

    java中不定长参数的使用方法 不定长参数方法的语法如下: 返回值 方法名(参数类型...参数名称) 在参数列表中使用"..."形式定义不定长参数,其实这个不定长参数a就是一个数组 ...

  9. java中 参数的调用_Java中的参数调用

    Java程序设计语言使用值调用.也就是说.方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容. 下面说明下这种情况.假定一个方法试图将一个参数值增加至3倍: publi ...

最新文章

  1. 怎么改utf8_想重装python但有很多包怎么办?不要慌,教你如何快速重装
  2. boost::polygon模块实现自定义polygon相关的测试程序
  3. 从NBear到ADO.NET Entity Framework让我迷惑了
  4. JAXB 有两个名为 ** 的属性,类的两个属性具有相同名称 **解决方案
  5. 三角形周长最短问题_一道三角形周长最小值问题
  6. Win7+VMware10.0+CentOS 6.4+Tomcat,Win7访问不了CentOS6.4上的Tomcat
  7. python最常用的编程方式是什么_python常用模块和对象编程
  8. [娱乐]华为HWT文件手动修改字体名称
  9. FaceBook 遭遇有史以来全球最大宕机
  10. 基于控制台的老虎机Java Demo
  11. 骆昊python100天 github_GitHub - Greatandy/Python-100-Days: Python - 100天从新手到大师
  12. 【ajax】7.请求:请求超时与网络异常处理+取消请求+请求重复发送问题
  13. vue 萤石_Vue接入萤石实时视频
  14. --hot 和 --inline的区别
  15. 移动通信核心网络技术总结(三)EPC网络的结构及原理
  16. 戴尔电脑插上耳机之后仍然外放
  17. FATFS文件系统复制文件
  18. 页面练习my blog day51
  19. 实现人生梦想,共同创造人生辉煌!
  20. Mac 强制退出应用程序的办法

热门文章

  1. jzoj1350-游戏(某C组)【SPFA,图,最短路】
  2. 【DP】剪草(jzoj 1510)
  3. codeforces E. Picking Strings 构造
  4. 动态规划训练11 [String painter HDU - 2476]
  5. Java 并发总结——AQS
  6. JS document.execCommand实现复制功能
  7. Mysql中的行级锁、表级锁、页级锁
  8. JSP2.0中的表达式语言(EL表达式)
  9. “老师,请您多关注一下我吧!!!”
  10. elasticsearch7常见查询(term、match、bool、filter)