#intellij-idea #keyboard-shortcuts
#intellij-idea #сочетания клавиш
Вопрос:
Возможно ли в 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 amp; boilerplate
}
}
было бы неплохо, ИМХО, уменьшить сложность в определенных случаях.
Некоторое время гуглил и пробовал различные диалоги по рефакторингу — пока не смог найти ничего лучше, чем «Изменить подпись».
РЕДАКТИРОВАТЬ: уточненный пример, позволяющий использовать несколько вариантов для каждого параметра
Ответ №1:
Отличный вопрос!
Да, это возможно с помощью комбинации Extract parameter
и Inline variable
.
-
Отправная точка
-
Поверх
getA()
,right click > Refactor > Extract > Parameter
(или ctrl alt p в Windows).
Результатом являетсяСделайте то же самое с
getB()
. -
Вызовите встроенную переменную для быстрого исправления / рефакторинга локальных переменных (ctrl alt n в Windows)
-
Полюбуйтесь результатом и переименуйте соответственно
Я могу сделать все это за 5 секунд, используя сочетания клавиш и навигацию с быстрыми исправлениями 😉
Комментарии:
1. Спасибо за ваш ответ! В то время как ‘Extract Variable’ предлагает заменить несколько вхождений, это, похоже, не относится к ‘Extract Parameter’ .. все еще любопытно, есть ли какая-либо еще более быстрая альтернатива 😉
2. @FranzEbner к сожалению, на данный момент альтернативы нет. Вы все еще можете открыть запрос функции на Youtrack, я поддержу.
3. @FranzEbner кстати, даже при многократном использовании это работает нормально
4. на данный момент это действительно лучший вариант, спасибо за запрос функции