Как в IDEA переименовать пересекающиеся по названию пакеты?
Несмотря на то, что на первый взгляд эти пакеты являются разными (потому что разнесены по разным модулям), по факту они являются одним пакетом. Это создаёт проблемы. Например, если я попытаюсь переименовать пакет ru.site.my.source.super в Module A , то такой же пакет переименуется и в остальных модулях, потому что это и есть тот же самый пакет. Поэтому я сейчас пытаюсь разграничить пакеты в разных модулях, получив на выходе такой результат:
Module A: ru.site.my.source.one.* Module B: ru.site.my.source.two.* Module C: ru.site.my.source.three.*
Как я могу это сделать? Проблема в том, что это очень сложно: я не могу просто переименовать пакет в одном модуле без того, чтобы он не переименовался бы в другом. По сути приходится вручную пересоздавать структуру пакетов и вручную перетаскивать каждый класс. Есть ли в IDEA какие-либо инструменты, которые позволят мне ускорить данный процесс?
Руководство пользователя IntelliJ IDEA. Основы рефакторинга.

IntelliJ IDEA предлагает полный набор функций автоматизированного рефакторинга кода, который приводит к существенному росту производительности при правильном использовании. Эта статья научит вас, как это сделать.
- Выбор Прежде всего, вам даже не обязательно выделять нужный элемент кода перед рефакторингом. IntelliJ IDEA достаточно умна, чтобы понять, какое выражение вы собираетесь реорганизовать, и просто запрашивает подтверждение если возможны несколько вариантов.

- Отмена Еще одна важная вещь, IntelliJ IDEA позволяет отменить все, включая рефакторинг, независимо от того, насколько масштабны эти преобразования. Просто нажмите Ctrl + Z (Cmd + Z для Mac), и вот перед вами тот код, каким он был пока вы ненароком не перепортили несколько тысяч строк вашей программы.
- МнемоникаIntelliJ IDEA рекомендует использовать клавиатуру вместо мыши. Доказано что это быстрее и в конце концов приведет к более продуктивной работе с кодом. То, что поможет Вам легко при помощи клавиатуры работать с диалоговыми и всплывающими окнами, и есть мнемоника — сочетания клавиш, которые автоматически назначаются каждому из диалоговых элементов. После открытия диалогового окна, нажмите и удерживайте Alt , чтобы IntelliJ IDEA выделила все доступные мнемоники. Затем вы можете использовать их, нажав на выделенную клавишу, удерживая нажатой клавишу Alt , чтобы получить доступ к необходимым элементам.

- Фрагменты строки Хорошо экономит время возможность извлечь часть строкового выражения с помощью команды Extract. рефакторинга. Просто выберите фрагмент и примените рефакторинг, чтобы заменить все случаи использования этого фрагмента на предложенную константу или переменную.

- Изменение типа переменной Обратите внимание, что вы можете выбрать тип переменной когда используете команду Extract рефакторинга. Нажмите Shift + Tab при редактировании имени переменной, и IntelliJ IDEA предложит вам выбрать тип переменной (например, вы можете использовать интерфейс вместо того класса который его реализует, или наоборот).

- Обратить логическое Один из простейших, но очень полезный способ рефакторинга это Invert Boolean, который инвертирует выражения со всей их семантикой и преобразованием данных для любой булевой переменной, параметра, поля или метода.

- Изменение типа Способ рефакторинга Type Migration, как предполагает его название, позволяет автоматически менять тип для любого члена класса, наряду со всеми зависящими от него элементами, такими как типы методов, локальных переменных, параметров и т.д.

- Основные комбинации клавиш для рефакторинга Переименовать: Shift, + F6 Копирование класса или файла: F5 Перемещение класса или файла: F6 Выделение константы: Alt + Ctrl + C (Alt + Cmd + C для Mac) Выделение переменной: Alt + Ctrl + V (Alt + Cmd + V для Mac) Выделение метода: Alt + Ctrl + M (Alt + Cmd + M для Mac) Выделение поля: Alt + Ctrl + F (Alt + Cmd + F для Mac) Выделение параметра: Alt + Ctrl + P (Alt + Cmd + P для Mac) Встраивание класса или метода: Alt + Ctrl + N (Alt + Cmd + N для Mac) Изменение сигнатуры: Ctrl + F6 (Cmd + F6 для Mac)
- Другие полезные способы рефакторинга Подьем членов класса вверх / вниз Выделение родительского класса Выделение интерфейса Преобразование анонимного класса во внутренний класс
- Переделай это Если вы не можете вспомнить комбинацию клавиш для конкретного рефакторинга, или вы просто не уверены, что делать дальше, просто используйте «Рефакторинг этого действия», нажав Ctrl + Shift, + Alt + T (Cmd + Shift, + Alt + T). Вы увидите список рефакторингов, доступных в текущем контексте.

На этом все по основам рефакторинга. См. следующие руководства для углублённого изучения конкретных тем. Оригинал статьи
IntelliJ IDEA — настройка, горячие клавиши, debugging — введение в Java 025 #
Сегодняшний программист очень сильно отличается от программиста 90-х.
Блокноты сменились мощными инструментами, которые подсказывают нам даже эффективные методы решения. Порой, кажется, что ещё чуть-чуть и людям точно не надо будет учить программирование, потому что Idea сделает всё сама.
Но пока этого не случилось нам стоит потратить немного времени на настройку самого главного инструмента, в котором мы пишем код. Idea может очень многое. Очень. В этой главе мы рассмотрим несколько горячих клавиш, некоторые типы подсказок и базисные вещи, которые нам предлагает рефакторинг и дебаггинг.
Давайте на секунду отвлечёмся от самого кодинга и попробуем настроить наш инструмент для работы с Java и подтянуть наши скилы для работы с ним.

Рефакторинг #
Alt + F6 — одна из самых полезных функций рефакторинг. Переименование переменной во всём коде программы, сколько бы раз она не упоминалась.
Для этого надо выделить название метода, класса или переменной и вызвать из контекстного меню или горячими клавишами безопасное переименование. Очень удобно и для тех случаев, когда класс создан с грамматической ошибкой. IDEA переименовывает и файл и класс одновременно.

Не только hotkeys #
Горячие клавиши очень полезны в работе, но всё же не все функции доступны через клавиши.
Стоит выделить время и посмотреть что может программа: подобрать цветовую гамму, шрифты и их размер, научиться делить окна на рабочие зоны.
Как открыть одновременно 2 класса в IDEA? #
Например мы можем работать одновременно в нескольких классах (файлах). Эта функция доступна нам, если мы правой кнопкой нажмём на вкладку файла в окне, а затем на “Split Vertically” или “Split Horizontally”. Это очень удобно, когда программа состоит из больше, чем одного класса.

Как добавить плагин в intellij idea? #
File -> Settings -> Plugins здесь можно посмотреть, что уже установлено или добавить новый полезный плагин.
Например мне оказался очень полезен плагин Grazie — проверка орфографии.

Проверка правописания в Intellij Idea для русского текста #
File -> Settings -> Editor -> Proofreading
Здесь можно добавить те языки, которые нужны в работе над кодом и документацией.

Горячие клавиши #
“Alt + h + k”. В Idea есть возможность вызвать помощника по горячим клавишам “Alt + h + k” открывает pdf файл, где описаны поддерживаемые вызовы.
Настройка консоли #
Порой выдача в консоли не всегда очевидна или понятна. Или требуется пересчитать элементы. “CTRL + F” поможет нам в поиске определённых символов или слов и подсветит их.

Отладка программы #
Отладка Java кода в IDEA. Основные возможности отладчика.
Intellij Idea – Рефакторинг кода
В этой главе мы узнаем о рефакторинге кода и о том, как он работает в IntelliJ. Рефакторинг кода – это реструктуризация кода без изменения его функциональности и удобства использования. Рефакторинг кода может быть сделан для улучшения читабельности кода, производительности или для удаления неиспользуемых / дублирующих функций. IntelliJ предоставляет отличную поддержку для рефакторинга кода. В этой главе обсуждаются различные действия по рефакторингу кода.
переименовывать
Действия переименования могут использоваться для переименования методов, их параметров, атрибутов класса, локальных переменных и так далее. Давайте создадим следующий класс в IntelliJ.
public class Employee private String name; private String address; private int age; public Employee() this("Jarvis", "Palo Alto", 35); > public Employee(String name, String address, int age) this.name = name; this.address = address; this.age = age; > public String getName() return name; > public void setName(String name) this.name = name; > public String getAddress() return address; > public void setAddress(String address) this.address = address; > public int getAge() return age; > public void setAge(int age) this.age = age; > @Override public String toString() return "Employee + "name='" + name + '\'' + ", address='" + address + '\'' + ", age pln"> + age + '>'; > public static void main(String args[]) Employee e = new Employee(); System.out.println(e); > >
Теперь давайте переименуем класс Employee в Person . Это действие внесет изменения в конструкторы, а метод main () –
- Выберите слово сотрудника
- Перейдите в Refactor → Rename и переименуйте его с помощью Person.
Выберите слово сотрудника
Перейдите в Refactor → Rename и переименуйте его с помощью Person.

Заменить дубликаты кода
Это одно из мощных действий по рефакторингу. IntelliJ идентифицирует дубликаты кода и заменяет его соответствующим кодом. Давайте введем дублирование кода и проведем его рефакторинг. Введите следующий код в редакторе –
public class Employee private String name; private String address; private int age; public Employee() this("Jarvis", "Palo Alto", 35); > public Employee(String name, String address, int age) this.name = name; this.address = address; this.age = age; > public void setData(String name, String address, int age) this.name = name; this.address = address; this.age = age; > public void showEmployeeDetail() System.out.println("Name pln"> + name + ", Address pln"> + address + ", Age pln"> + age); > public static void main(String args[]) Employee e = new Employee(); e.showEmployeeDetail(); > >
В этом примере конструктор Employee (String name, String address, int age) и открытый void setData (String name, String address, int age) полностью идентичны. После рефакторинга конструктор Employee (String name, String address, int age) изменяется следующим образом:
public Employee(String name, String address, int age) setData(name, address, age); >
Чтобы заменить дубликаты –
- Перейдите в Refactor → Найти и заменить дубликаты кода.
- Выберите область рефакторинга и следуйте инструкциям на экране для завершения действия.
Перейдите в Refactor → Найти и заменить дубликаты кода.
Выберите область рефакторинга и следуйте инструкциям на экране для завершения действия.

Копировать рефакторинг
В этом разделе мы поймем, как копировать один класс в другой. Давайте скопируем класс Employee в класс Person. Мы можем скопировать его в существующий или новый модуль. IntelliJ сделает необходимые изменения в зависимости от этого. Выполните следующие действия, чтобы выполнить рефакторинг копии.
- Перейдите в Refactor → Copy , откроется диалоговое окно.
- Введите новое имя и целевой пакет.
- Нажмите на кнопку ОК, и он сделает все необходимое.
Перейдите в Refactor → Copy , откроется диалоговое окно.
Введите новое имя и целевой пакет.
Нажмите на кнопку ОК, и он сделает все необходимое.

Переместить Рефакторинг
Рефакторинг Move аналогичен копии, но вместо создания другой копии он перемещает код в другой пакет или делает его внутренним классом другого класса.
Выполните следующие шаги, чтобы выполнить рефакторинг ходов –
- Перейти к, Refactor → Move.
- Появится новое окно.
- Выберите один из вариантов в соответствии с вашим выбором и нажмите Refactor.
Перейти к, Refactor → Move.
Появится новое окно.
Выберите один из вариантов в соответствии с вашим выбором и нажмите Refactor.

Безопасное удаление
Действие Безопасное удаление удалит объект только тогда, когда на него нет ссылок нигде в проекте. Целью этой опции может быть класс, интерфейс, метод, поле или параметр.
Давайте посмотрим на это в действии. Введите следующий код в редакторе –
public class HelloWorld static void sayHello() System.out.println("Hello, World . "); > public static void main(String[] args) sayHello(); > >
Выполните следующие действия для выполнения безопасного удаления –
- Выберите метод sayHello () .
- Щелкните правой кнопкой мыши по нему и выберите опцию Refactor → Safe Delete .
- Поскольку метод sayHello () используется, он покажет ошибку, как на следующем скриншоте –
Выберите метод sayHello () .
Щелкните правой кнопкой мыши по нему и выберите опцию Refactor → Safe Delete .
Поскольку метод sayHello () используется, он покажет ошибку, как на следующем скриншоте –

Изменить подпись
Действие изменяет подпись метода. Он может изменять имя метода, его параметры, типы, возвращаемые значения и так далее. Давайте возьмем метод из приведенного выше примера и изменим его сигнатуру.
Выполните следующие действия, чтобы выполнить действие Изменить подпись –
- Выберите метод.
- Щелкните правой кнопкой мыши по нему и выберите Refactor → Изменить подпись
- Появится новое окно, в котором вы можете выполнить вышеуказанные действия.
- В нижней части окна отображается предварительный просмотр новой подписи.
Щелкните правой кнопкой мыши по нему и выберите Refactor → Изменить подпись
Появится новое окно, в котором вы можете выполнить вышеуказанные действия.
В нижней части окна отображается предварительный просмотр новой подписи.

Тип Миграция
Тип Миграция меняет тип символа. Этот символ может быть параметром метода или атрибутом класса. Давайте рассмотрим следующий метод перед выполнением требуемого действия –
static void sayHello(String name) System.out.println(name); >
Выполните следующие шаги для выполнения миграции типов –
Выберите тип данных «String».
Щелкните правой кнопкой мыши по нему и выберите « Refactor» → «Тип миграции» .
Введите требуемый тип данных в данное текстовое поле.
Выберите область и нажмите на кнопку Refactor.