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


83

Чи існує простіший спосіб упорядкування методів у вихідному файлі класу в IntelliJ, ніж вирізання та вставка коду вручну? Сьогодні мені це часто потрібно під час рефакторингу застарілого коду, наприклад, для переміщення пов’язаних методів близько один до одного у вихідному коді.

В Eclipse AFAIK є вигляд, подібний до подання Structure 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 + Вгору / Cmd + Shift + Вниз
Крістіан Гарсія

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

24

Чи не ідеальний відповідь ще з - за помилки в IntelliJ.

Хоча IntelliJ пропонує цю функцію неявно, але її потрібно включити, а також виправити. Запропонований ОП спосіб - це технічне упорядкування методів у глибинному порядку. Однак, якщо ви використовуєте впорядкування за шириною (яке працює належним чином), це повинно значно зменшити ручну роботу рухомих функцій, розташувавши всі методи виклику та виклику.

Посилання на випуск: https://youtrack.jetbrains.com/issue/IDEA-149524 . Будь ласка, проголосуйте за його резолюцію.

IntellijRearrangeMethodsInDFO

Відповідною дією є Перестановка коду. Цьому не призначено жодного ключа, але ви можете визначити свій власний, скориставшись Налаштування-> Розкладка клавіш.

RearrangeActionMenuButton

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


24

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

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


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

Це взагалі не працює. Використання цієї конфігурації та виконання Rearrange нічого не робить.
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.