IntelliJ: подпись рефакторинга для использования свойств параметров - PullRequest
1 голос
/ 26 марта 2019

Возможно ли в 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 Ответ

1 голос
/ 27 марта 2019

Отличный вопрос!
Да, это возможно с помощью комбинации Extract parameter и Inline variable.

  1. Начальная точка

    enter image description here

  2. Более getA(), right click > Refactor > Extract > Parameter (или ctrl + alt + p в Windows).
    Результат:

    enter image description here

    Сделайте то же самое с getB().

  3. Вызвать Встроенную переменную быстрое исправление / рефакторинг для локальных переменных ( ctrl + alt + n в Windows)

    enter image description here

  4. Полюбуйтесь на результат и переименуйте соответственно

    enter image description here


Я могу сделать все это за 5 секунд, используя быстрые клавиши и быстрые исправления;)

...