IntelliJ:重构签名以使用参数属性

时间:2019-03-26 09:15:25

标签: intellij-idea keyboard-shortcuts

在IntelliJ中是否可以进行这种重构

public class Demo {

    public long sum(Model model) {
        int a = model.getA();
        int b = model.getB();
        System.out.println(model.getA());
        System.out.println(model.getB());
        return (long) a + b;
    }

    //refactor to

    public long sum(int a, int b) {
        System.out.println(a);
        System.out.println(b);
        return (long) a + b;
    }

    private static class Model {
        private int a;
        private int b;
        private int c;

        //getter & boilerplate
    }
}

恕我直言,在某些情况下可以降低复杂性。

谷歌搜索了一段时间,并尝试了各种重构对话-找不到比“更改签名”更好的东西了。

编辑:改进示例以使每个参数具有多种用法

1 个答案:

答案 0 :(得分:1)

好问题!
是的,可以结合使用Extract parameterInline variable

  1. 起点

    enter image description here

  2. getA()right click > Refactor > Extract > Parameter(或Windows上的 ctrl + alt + p )上。
    结果是

    enter image description here

    getB()做同样的事情。

  3. 在局部变量( ctrl + alt + n <上调用 Inline变量快速修复/重构/ kbd>(在Windows上)

    enter image description here

  4. 欣赏结果并相应地重命名

    enter image description here


使用快捷方式和快速修复导航,我可以在5秒钟内完成所有操作;)