java - 在循环中间返回

标签 java return

<分区>

我必须编写一个函数来从链表中删除一个元素(我的,而不是 Collections 框架的),所以这是我的第一次尝试:

public void remove(E element) {
    Cell<E> cell = sentinel;
    int i = 0;
    while (i < count) {
        if (cell.getElement().equals(element)) {
            cell.getPrevious().setNext(cell.getNext());
            --count;
            return;
        }
        ++i;
        cell = cell.getNext();
    }
}

我的问题是:这样使用 return 好吗? 更一般地说,当检查条件并且运行以下指令没有意义时,使用 return 对我来说是有意义的:

void func() {
    while (condition) {
        if (something) {
            instructions;
            return;
        }
        more instructions;
    }
}

但是由于它的可读性不是很好,而且每个人都说在 java 中可读性是优先考虑的,所以我不得不考虑另一种方法。所以我改变了条件并使用了一个额外的 boolean 值。

public void remove(E element) {
    boolean found = false;
    Cell<E> cell = sentinel;
    int i = 0;
    while (!found && i < count) {
        if (cell.getElement().equals(element))
            found = true;
        else {
            ++i;
            cell = cell.getNext();
        }
    }
    if (found) {
        cell.getPrevious().setNext(cell.getNext());
        --count;
    }
}

这样一来,就没有奇怪的return 了,指令只在必须执行时才执行。如果我再次遇到这种情况,我想我将不得不像这样重写循环。 也许我完全错了,第一种方法更好。你怎么看?

最佳答案

在我看来,如果不是太复杂的话,早点回来是完全可以的。类似于使用 break 语句提前跳出循环。

你可以看看这个关于程序员的问题,他们每个人都提出了有效的观点。 https://softwareengineering.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use-an-if-statement

关于java - 在循环中间返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379395/

相关文章:

java - 四元组零距离问题

测试和部署中的 Javascript 不同的 ajax url

python - Python 函数可以只返回两个值中的第二个吗?

keyboard - 如何在没有表单标签的情况下更改 Mobile Safari 键盘中的返回键文本?

python - 如何在 Python 中返回多个值?

Ruby 一行 if return 语句

java - Maven eclipse 打包 "pom"不工作

java - Android:如何使用自定义 http header 和内容类型创建 post xml-rpc 请求

数据库表的Java格式化日期输出

JavaScript : Split string using function and returning it