原始Java代码:
public int test() {
int total = 100;
if (new Random().nextInt(2) < 1) {
total += 1;
} else {
total -= 2;
}
return total;
}
重构后的预期代码:
public int test() {
return 100 + randomChange();
}
private int randomChange() {
return new Random().nextInt(2) < 1 ? 1 : -2;
}
我可以手动更改代码,但我想回复IDE的重构工具(例如IDEA或eclipse)。不幸的是,我找不到办法。
是否可以通过工具重构代码并且不需要手动破解它?
答案 0 :(得分:3)
突出显示:
if (new Random().nextInt(2) < 1) {
total += 1;
} else {
total -= 2;
}
提取方法:并使用提取方法( ALT + SHIFT + M 对于Eclipse和 CTRL + ALT + M 对于Intellij iirc,但请仔细检查!)。您仍然需要进行一些手动重构,因为默认情况下,您希望将“total”作为参数传递并返回更改的值。
If / else - &gt;三元: 是将if / else语句更改为三元运算符的方法,但它们不是由IDE提供的,而是由第三方插件提供的,例如Eclipse,这应该是{{3 }}
本地var - &gt; return语句:至于“total”变量我不知道有任何插件可以做到这一点而Eclipse / Intellij没有这样的选项(至少我不知道一个)。他们可以通过提取局部变量来反过来。
@Downvoter:这是目前重构工具最接近的。正如评论部分所提到的,没有神奇的“读我的思绪”按钮。
答案 1 :(得分:3)
这是一种在eclipse上重构的方法,它实际上不会提供你想要的确切代码:
选择if-else
块。
右键单击,然后转到“重构”
转到选项 - “提取方法”
提供方法名称 - “randomChange”。您将看到它将total
作为参数传递给方法。
点击“确定”。
您的代码将受到严重影响:
public int test() {
int total = 100;
total = randomChange(total);
return total;
}
private int randomChange(int total) {
if (new Random().nextInt(2) < 1) {
total += 1;
} else {
total -= 2;
}
return total;
}
但是,我认为没有办法将if-else
块重构为条件。