2

我讨厌我的java代码中continue的s(和breaks),但我并不总是编写代码的人,所以我想知道Intellij是否有一种安全的方法可以将它们从循环中删除?这是一个简单的示例,显示了一个打印奇数的 for 循环:

package com.sandbox;

import static java.util.Arrays.asList;

public class Sandbox {

    public static void main(String[] args) {
        new Sandbox().run();
    }

    private void run() {
        for (Integer integer : asList(1, 2, 3, 4, 5, 6, 7)) {
            if (integer % 2 == 0) {
                continue;
            }
            System.out.println(integer);
        }
    }
}

continue如果我破坏了我的代码,我如何摆脱它而不用担心?

4

2 回答 2

4

在 if 条件上 Alt+Enter 并选择“Invert If Condition”。它在您的示例和其他示例中删除了“继续”。

于 2013-06-26T06:54:33.893 回答
1

我已经找到了如何做到这一点。突出显示 for 循环中的所有内容提取到方法中。例如,突出显示:

        if (integer % 2 == 0) {
            continue;
        }
        System.out.println(integer);

并提取方法,它将变成这样:

package com.sandbox;

import static java.util.Arrays.asList;

public class Sandbox {

    public static void main(String[] args) {
        new Sandbox().run();
    }

    private void run() {
        for (Integer integer : asList(1, 2, 3, 4, 5, 6, 7)) {
            iterate(integer);
        }
    }

    private void iterate(Integer integer) {
        if (integer % 2 == 0) {
            return;
        }
        System.out.println(integer);
    }
}

这比以前更干净了吗? 不! 这不是重点。想象一下,这不是一个简单的例子。想象一下,你的代码在 for 循环的深处嵌套了 10 个大括号,并继续到处撒播。continue 不断地阻止您进行重构,因为您无法将包含 continue 的代码提取到它自己的方法中,因为 acontinue仅在 for 循环的上下文中语法正确。

这个答案为更清洁的代码提供了一步,但有时你必须让事情变得更混乱,然后才能让它们变得更清洁。就是这样一个例子。

于 2013-06-26T00:10:43.400 回答