Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我在pathfind上工作,在这里我需要获取最少的vararg整数,在这里我可以获取一个或多个整数。
我创建了一个返回最小值的方法,但我的Leed开发人员说这还不够好,我必须进行一些重构并改进此方法。这是我的代码:
我不知道为什么总是返回最小值时此方法不够好。我正在尝试寻找其他解决方案,但我遇到了麻烦。有人可以帮我吗?
您的解决方案有很大的问题!您没有注意到,当不带任何参数使用此方法时,您将获得异常而不是最小值。如果您对此方法执行单元测试,则测试将失败。
使用此解决方案,您将获得以下好处:
通过JUnit测试并始终返回最小值的方法,而不是抛出IllegalArgumentException(java.lang.IllegalArgumentException:方法不带参数。-从代码中调用)
您可以使用foreach循环
易于维护
代码看起来不错
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我在pathfind上工作,在这里我需要获取最少的vararg整数,在这里我可以获取一个或多个整数。
我创建了一个返回最小值的方法,但我的Leed开发人员说这还不够好,我必须进行一些重构并改进此方法。这是我的代码:
public int getMinimalValue(int... arguments) {
if(arguments.length == 0)
throw new IllegalArgumentException("Method is called without arguments.");
int localMinimum = arguments[0];
for (int i = 1; i < arguments.length; i++)
if (arguments[i] < localMinimum)
localMinimum = arguments[i];
return localMinimum;
}
我不知道为什么总是返回最小值时此方法不够好。我正在尝试寻找其他解决方案,但我遇到了麻烦。有人可以帮我吗?
最佳答案
您的首席开发人员是对的。您的解决方案不够好。请尝试以下操作:
public int getMinimalValue(int firstArg, int... remainingArgs) {
int minimum = firstArg;
for (int arg : remainingArgs) {
if (arg < minimum) {
minimum = arg;
}
}
return minimum;
}
您的解决方案有很大的问题!您没有注意到,当不带任何参数使用此方法时,您将获得异常而不是最小值。如果您对此方法执行单元测试,则测试将失败。
使用此解决方案,您将获得以下好处:
通过JUnit测试并始终返回最小值的方法,而不是抛出IllegalArgumentException(java.lang.IllegalArgumentException:方法不带参数。-从代码中调用)
您可以使用foreach循环
易于维护
代码看起来不错
关于java - 重构最小方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20364292/