成都集团网站设计推荐,国外大气网站欣赏,wordpress大学 插件,制作图片压缩包java 参数命名冲突创建具有许多参数的方法是一个主要的缺点。 每当需要创建这样的方法时#xff0c;就在空气中闻一闻#xff1a;这是代码的味道。 强化单元测试#xff0c;然后进行重构。 没有借口#xff0c;没有屁股。 重构#xff01; 使用构建器模式#xff0c;甚至… java 参数命名冲突 创建具有许多参数的方法是一个主要的缺点。 每当需要创建这样的方法时就在空气中闻一闻这是代码的味道。 强化单元测试然后进行重构。 没有借口没有屁股。 重构 使用构建器模式甚至更好地使用Fluent API。 对于后者注释处理器的影响可能会有很大帮助。 综上所述当我们面对现实生活而不是我们在业余爱好项目中可以遵循的理想主义模式时我们可能会达到人生的关键。 遗留下来的企业库怪物具有数以千计的参数方法并且您没有权限时间勇气或兴趣对您不利来修改……操作……对其进行重构。 如果有时间您可以创建一个构建器作为外观将丑陋的API隐藏在其后。 创建构建器仍然是您甚至在编写之前就必须进行单元测试的代码您知道TDD而您可能没有时间。 调用怪异方法的代码也已经存在您只需对其进行维护即可。 您仍然可以做一些小技巧。 它可能并不完美但是仍然有些完美。 假设有一个方法 public void monster(String contactName, String contactId, String street, String district,...Long pT){
...
} 第一件事是在调用者的位置明智地选择局部变量。 可惜已经选择了名称您可能不想更改它。 可能有某些原因例如遵循了应用程序范围的命名约定即使您的样式不是这样也可能有意义。 因此调用 monster(nm, 05300 dI, getStrt(), d, ... , zg % 3L ); 不完全是我在说的。 这就是您所拥有的您可以使用它也可以在代码中插入新变量 String contactName nm;
String contactId 05300 dI;
String street getStrt();
Street district d;
...
Long pT zg % 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 zg % 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(zg % 3L) ); 该代码仍然很丑陋但是在调用者处更具可读性。 你甚至可以收集静态方法为工具类或接口在Java中8的情况下命名为喜欢with using to等等。 您可以将它们静态导入到您的代码中并进行如下一些方法调用 doSomething(using(someParameter), with(someOtherParameter), to(resultStore)); 如果您回答了最后一个问题那么所有这些都将使您感到跷参数pT是什么* 。 * “ whatever”您可以随意替换为其他单词 翻译自: https://www.javacodegeeks.com/2014/09/named-parameters-in-java.htmljava 参数命名冲突