重构最小方法

时间:2013-12-04 00:06:20

标签: java

我在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;
}

我不知道为什么这个方法总是返回最小值时不够好。我想找到另一个解决方案,但我被卡住了。请问有人帮帮我吗?

1 个答案:

答案 0 :(得分:-1)

您的首席开发人员是对的。你的解决方案还不够好。
试试这个:

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循环

  • 易于维护
  • 代码看起来不错