java - 如何使用重构工具安全地重构代码?

标签 java eclipse intellij-idea refactoring

原始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)。不幸的是,我找不到办法做到这一点。

是否可以通过工具来重构代码而不需要手动破坏它?

最佳答案

突出显示这一点:

if (new Random().nextInt(2) < 1) {
    total += 1;
} else {
    total -= 2;
}

提取方法:并使用提取方法 (ALT+SHIFT+M 对于 Eclipse,CTRL+ALT+M 对于 Intellij iirc,但请仔细检查!)。您仍然需要进行一些手动重构,因为默认情况下,您将需要传递“total”作为参数并返回更改后的值。

If/else -> 三元:种方法可以将 if/else 语句更改为三元运算符,但它们不是由 IDE 提供,而是由第三方插件提供例如对于 Eclipse,这应该是 help .

Local var -> return statements: 至于“total”变量,我不知道有任何插件可以做到这一点,并且 Eclipse/Intellij 没有这样的选项(至少我不知道其中之一)。他们可以通过提取局部变量以相反的方式来完成此操作。

@Downvoter:这是使用当前重构工具可以获得的最接近的结果。正如评论部分提到的,没有神奇的“读我的想法”按钮。

关于java - 如何使用重构工具安全地重构代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474550/

相关文章:

intellij-idea - IntelliJ 中有没有办法知道我在一个软件项目上花费了多少时间?

java - 如何在 Java 中使用 Flatmap 和个性化对象

eclipse - "apply patch"在 Eclipse 中做什么?

用于 JAX-WS org.codehaus.mojo 的 Eclipse m2e 连接器

Eclipse + PyDev 说 json.load() 和 json.dump() 不存在

java - 如何使用intellij正确远程调试pod?

java - 无法在IntelliJ中调试Spock测试

c# - 可以与 WCF 交互的 Java Web 服务工具包

java - 如何重新分配已输入的基于扫描仪的值? - java

eclipse - 在 IDE 中使用 clojure 和 leiningen