返回for循环或外循环

Daa*_*ape 26 java for-loop while-loop

今天有人告诉我return在Java中使用关键字.我编写了一个简单的for循环来验证数组中的某些东西.假设array是一个长度为n的数组,这是我的代码:

for (int i = 0; i < array.length; ++i) {
    if (array[i] == valueToFind) {
        return true;
    }
}
return false;
Run Code Online (Sandbox Code Playgroud)

现在有人告诉我这不是很好的编程,因为我n在循环中使用语句,这会导致垃圾收集失灵.因此,更好的代码将是:

int i = 0;
while (i < array.length && array[i] != valueToFind) {
    ++i;
}
return i != array.length;
Run Code Online (Sandbox Code Playgroud)

问题是我无法正确地阐述为什么第一个for循环不是一个好习惯.有人可以给我一笔费用吗?

Jon*_*eet 60

现在有人告诉我这不是很好的编程,因为我在循环中使用return语句,这会导致垃圾收集失灵.

这是不正确的,并建议你应该对这个人的其他建议给予一定程度的怀疑.

"只有一个返回语句"(或者更一般地说,只有一个出口点)的口号对于您必须自己管理所有资源的语言非常重要 - 这样您就可以确保将所有清理代码放在一个地方.

它在Java中的用处要小得多:只要你知道你应该返回(以及返回值应该是什么),只需返回即可.这样,它更容易阅读 - 您不必接受任何其他方法来计算将要发生的其他事情(除了finally块).

  • 单个return语句是我以前工作的代码约定的一部分.我发现它会导致很多嵌套,并且更难以阅读代码. (5认同)
  • @brain:的确如此.这通常是人们在不了解*原因*的情况下接受一个想法的结果*为什么在某种情况下这是一个好主意. (2认同)

Mik*_*sen 6

现在有人告诉我这不是很好的编程,因为我在循环中使用return语句,这会导致垃圾收集失灵.

那是一堆垃圾.方法中的所有内容都将被清除,除非在类或其他地方有其它引用(封装很重要的原因).根据经验,通常最好只使用一个return语句,因为它更容易找出方法将退出的位置.

就个人而言,我会写:

Boolean retVal = false;
for(int i=0; i<array.length; ++i){
    if(array[i]==valueToFind) {
        retVal = true;
        break; //Break immediately helps if you are looking through a big array
    }
}
return retVal;
Run Code Online (Sandbox Code Playgroud)

  • 咩; 编写最易读的代码通常会更好,无论对返回语句的数量是多少.例如,如果你有一堆保护条款,每个(IMO)应该在失败时立即返回. (6认同)