我在我的java代码中讨厌continue
s(和break
s),但我并不总是那个编写代码的人,所以我想知道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
而不必担心我的代码是否破损?
答案 0 :(得分:3)
在if条件上按Alt + Enter并选择“Invert If Condition”。它会在您的示例和其他一些示例中删除“继续”。
答案 1 :(得分: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
在for循环的上下文中仅在语法上是正确的。
这个答案为更干净的代码提供了一个步骤,但有时你必须让事情变得有点麻烦才能让它们变得更清洁。这是一个例子。