Простой способ изменить порядок методов класса Java в IntelliJ?


83

Есть ли более простой способ переупорядочения методов в исходном файле класса в IntelliJ, чем вырезание и вставка кода вручную? В настоящее время мне это часто требуется при рефакторинге устаревшего кода, например, для перемещения связанных методов ближе друг к другу в исходном коде.

В Eclipse AFAIK есть представление, аналогичное представлению структуры IntelliJ, где я могу перетаскивать методы. Однако это не работает в IntelliJ, и я также не смог найти никаких подсказок с его помощью.

Я использую IntelliJ 9.0.2, чтобы быть конкретным.


Я думаю, что лучшим решением будет инструмент форматирования, который автоматически упорядочивает ваши методы. Проза: методы должны быть упорядочены по способу вызова. Как если бы вы читали статью в газете.
Chris311

Ответы:


109

Вы можете выбрать имя метода и нажать: Ctrl+ Shift+ Upили Ctrl+ Shift+, Downчтобы переместить его вверх и вниз.

В OS X: Cmd+ Shift+ Upили Cmd+ Shift+Down

Помимо этого, плагин Rearranger позволяет быстро перемещать методы и даже определять стандартный порядок на основе вашего соглашения о кодировании.


разве нет чего-то, что можно просто переупорядочить, например, в алфавитном порядке?
Jaime Hablutzel

Ссылка мертва, похоже, правильная: java.net/projects/rearranger
stian

@stian - Я отредактировал сообщение, чтобы указать на страницу плагина на веб-сайте JetBrains, поскольку по опубликованной вами ссылке, похоже, нет доступных загрузок
Адриан

5
Для Mac OS X: Cmd + Shift + Up / Cmd + Shift + Down
Christian García

2
Начиная с IDEA 16, он доступен через меню:Code > Move Statement Up/Down
Lu55,

24

Не идеальный ответ еще из - за ошибки в IntelliJ.

Хотя IntelliJ предлагает эту функцию неявно, но ее необходимо включить, а также исправить. Предлагаемый OP способ технически упорядочивает методы в порядке глубины. Однако, если вы используете упорядочение в ширину (которое работает правильно), оно должно значительно сократить ручную работу по перемещению функций за счет объединения всех методов вызывающего и вызываемого.

Ссылка на выпуск: https://youtrack.jetbrains.com/issue/IDEA-149524 . Пожалуйста, проголосуйте за его решение.

IntellijRearrangeMethodsInDFO

Подходящим действием для этого является изменение кода. Ему не назначен ключ, но вы можете определить свой собственный, используя Preferences-> Keymap.

ПереупорядочитьActionMenuButton

введите описание изображения здесь


24

IntelliJ имеет встроенную систему, которая позволяет вам указывать порядок ваших методов. Вам нужно перейти в Настройки (Ctrl + Alt + S) -> Редактор -> Стиль кода -> Java -> Расположение (вкладка) и прокрутите вниз, пока не найдете значки с methods. Там вы можете управлять параметрами, чтобы отсортировать их по видимости или в алфавитном порядке, или чтобы связанные элементы были сгруппированы вместе. Вот снимок экрана с моими настройками, который автоматически упорядочит методы по видимости (общедоступный, защищенный, частный) и в алфавитном порядке (az). Синим цветом показаны выбранные в настоящее время правила.

введите описание изображения здесь


1
Как я могу применить выбор порядка к одному или нескольким правилам сразу?
Дерек Махар

Это вообще не работает. Использование этой конфигурации и выполнение перестановки ничего не дает.
Mulgard,

Это решение работает с порядком по умолчанию. Благодаря!
Мистер Поливирл,

7

Наведите курсор на строку определения метода (вам не нужно нажимать ctrl+ shift+ upили ctrl+ shift+ downдля перемещения вверх или вниз соответственно.

Вы также можете нажать ctrl+ shift+, numberpad -чтобы быстро свернуть все, чтобы вы могли сосредоточиться на перемещении (простой -работает и на моем ноутбуке, не знаю почему) и ctrl+ shift+, numberpad +чтобы вернуться, чтобы все увидеть (ctrl-shift-equals работает на моем ноутбуке как хорошо).


3

Выделите блок текста (нажмите Ctrl-W несколько раз), а затем используйте Ctrl-Shift-Up и Ctrl-Shift-Down, чтобы переместить его.


1

Есть автоматизированный способ, который позже можно будет настроить

Код -> показать диалоговое окно переформатирования файла

и отметьте поле "изменить код"

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.