intellij idea автоформатирование кода

Reformat and rearrange code

You can reformat a part of code, the whole file, group of files, a directory, and a module. You can also exclude part of code or some files from the reformatting.

Reformat a code fragment in a file

In the editor, select a code fragment you want to reformat.

If you don’t select a code fragment, IntelliJ IDEA will reformat the whole file.

Reformat a file

Keep pressing Shift and select additional files for a group reformatting.

In the dialog that opens, if you need, select the following reformatting options:

Optimize imports : select this option if you want to remove unused imports, add missing ones, or organize import statements.

For more information, refer to the Optimize imports section.

Rearrange entries : select this option if you need to rearrange your code based on the arrangement rules specified in the code style settings.

Code cleanup : select this option to run the code cleanup inspections.

If you want to see the exact changes made to your code during the reformatting, use the Local History feature.

Reformat a module or a directory

intellij idea автоформатирование кода

You can also apply filters to your code reformatting such as specifying a scope or narrowing the reformatting to the specific file types.

Reformat line indents

You can reformat line indents based on the specified settings.

In some cases, the option Detect and use existing file indents for editing located in the Indent Detection section in File | Settings/Preferences | Editor | Code Style can override your settings. In this case IntelliJ IDEA will display a notification.

Automatically reformat code on save

You can configure the IDE to reformat code in modified files automatically when your changes are saved.

Enable the Reformat code option.

Additionally, you can click Configure scope to specify the patterns of filenames and directories that you want to exclude from reformatting.

Exclude files from reformatting

You can exclude a group of files and directories from reformatting, code arrangement, and import optimization.

Switch to the Formatter tab and in the Do not format field, enter the files and directories that you want to exclude using a glob pattern.

Apply the changes and close the dialog.

intellij idea автоформатирование кода

Exclude code fragments from reformatting in the editor

Switch to the Formatter tab and enable the Turn formatter on/off with markers in code comments option.

The code between the markers won’t be reformatted.

intellij idea автоформатирование кода

Keep existing formatting

You can select formatting rules which will be ignored when you reformat the code. For example, you can adjust the IDE to keep simple methods and functions in one line, whereas normally they are expanded into multiple lines after code reformatting.

In the Keep when reformatting section, select the formatting rules which you want to ignore and deselect those which should be applied.

IntelliJ IDEA will reformat your code in accordance with the current style settings, keeping existing formatting for the rules which you’ve selected.

Rearrange code

You can rearrange your code according to the arrangement rules set in the Code Style page of the Settings/Preferences dialog. You can also create groups (aliases) of rules and refer to them when you create a matching rule.

intellij idea автоформатирование кода intellij idea автоформатирование кода

You can exclude specific files and folders from arrangement. For more information, refer to Exclude files from reformatting.

Rearrange code entries

Select a language for which you want to create arrangement rules.

On the Arrangement tab, specify the appropriate options such as grouping and matching rules.

intellij idea автоформатирование кода

Click OK to save the changes.

Automatically rearrange code on save

You can configure the IDE to rearrange code elements in modified files automatically when your changes are saved.

Enable the Rearrange code option.

Additionally, you can click Configure arrangement rules to specify the rules for reordering code elements for the selected language.

Источник

Руководство пользователя IntelliJ IDEA. Cтиль и форматирование кода

intellij idea автоформатирование кода

Cтиль и форматирование кода

Форматирование кода

IntelliJ IDEA автоматически применяет стиль кода, настроенный при редактировании, и в большинстве случаев вам не нужно вызывать Reformat Code (Форматирование кода) явно. Однако, вы можете сделать это в любое время как для всего файла, так и просто для выбранного куска кода, или даже для всего каталога, просто нажав Alt +Ctrl + L ( Alt + Cmd + L для Mac.)

intellij idea автоформатирование кода

Если вы хотите применить Reformat Code для всех файлов в директории, используйте ту же кнопку на пенели инструментов проекта.

intellij idea автоформатирование кода

Автоматическое выравнивание строк

Еще одна полезная возможность Auto-Indent Lines, которая помогает вам исправить отступ строки. Это действие иногда является лучшим вариантом, чем Reformat Code, потому что он не требует от вас выбрать что-нибудь. Просто нажмите Alt + Ctrl + I ( Alt + Cmd + I для Mac), и отступы для текущей строки будет быстро приведены в порядок.

intellij idea автоформатирование кода

Настройки

IntelliJ IDEA позволяет вам настроить параметры стилей кода для каждого из поддерживаемых языков, либо для проекта либо для среды разработки в целом с помощью Settings → Code Style

intellij idea автоформатирование кода

Схемы стилей для проекта могут быть распространены среди других членов вашей команды разработчиков, с помощью системы контроля версий.

Символ табуляции

Последняя, но не менее важная настройка стоящая вашего внимания это Use tab character (использование символа табуляции). По умолчанию эта настройка выключена, и IntelliJ IDEA использует обычные пробелы для выравнивания строк вместо символов табуляции. Если в ваших файлах используется слишком много пробелов для выравнивания кода, вы можете оптимизировать их размер включив эту настройку (4 пробела будут заменены на 1 символ табуляции).

Источник

Intellij IDEA, format all code in a project

I really like IDEA’s code formatting, but how do I get it to reformat all the code in a particular project without going through each file? I’ve found the option to tidy / optimise imports on code before committing it to subversion which is great, but it only seems to apply to files that have otherwise been modified (which is sensible in the majority of cases!)

Is there a way to auto-format all the source files in a project without going through them all by hand?

intellij idea автоформатирование кода

4 Answers 4

In the tree-structure, right click on the folder you like to reformat, choose «Reformat code» from the menu.

intellij idea автоформатирование кода

Choose the «whole project» radio button instead of the individual file when you ask to reformat.

Just be aware of one problem: If you’re working on a larger project with other developers who don’t conform to your style, and you’re using IntelliJ to transform all their code every time you edit it, you might be causing a problem with your version control system. It will long a huge volume of changes when you check in, and few of them will have anything to do with changing functionality. Better to conform to the group style in that case.

According the iDea: Editor basics documentation:

You can use the shortcut Ctrl + ALT + L (Windows/Linux) or ⌥⌘ + L (MAC OS X) and select the Rearrange entries option to reformat the code in the current file or reformat a module or directory (after selecting more than one file).

You can also Right-click a module, file, or directory from the context menu and select Reformat Code and also select the Rearrange entries option.

intellij idea автоформатирование кода

You can also optimize the imports of your files by selecting the Optimize imports option.

Is some Linux versions the shortcut Ctrl + ALT + L can lock the screen, so you will need to Right-click a file or directory from the context menu and select Reformat Code and also select the Rearrange entries option.

This works for most of the Jetbrains IDES (iDea, PyCharm, WebStorm, RubyMine, and so on.)

Источник

Разработка плагина IntelliJ IDEA. Часть 6

В этой части: рефакторинги, форматирование, настройки и другие полезные функции. Предыдущая часть.

Рефакторинг «Переименование»

Операция переименования в IntelliJ IDEA похожа на «Find Usages», IDEA использует те же правила для поиска элементов для переименования и тот же индекс слов для нахождения файлов, в которых могут быть ссылки на элемент, который будет переименован.

Когда выполняется этот рефакторинг, на целевом элементе вызывается метод PsiNamedElement.setName(), а для всех ссылок на него – метод PsiReference.handleElementRename(). Оба метода выполняют одно основное действие – замену нижележащего AST-узла, новым, содержащим введенный пользователем текст. Создание полностью корректного AST бывает довольно сложным, но можно воспользоваться следующим методом: создать фиктивный файл пользовательского языка, содержащий необходимый узел, и затем скопировать его.

Пример: реализация метода setName() в плагине Properties.

Другой, связанный с рефакторингом по переименованию интерфейс – NamesValidator. Этот интерфейс позволяет плагину проверять, корректно ли введено пользователем имя идентификатора, т.е. соответствует правилам именования в пользовательском языке и не совпадает с ключевым словом. Если реализация интерфейса не предоставляется плагином, то используются правила именования Java. Реализация должна быть зарегистрирована в точке расширения com.intellij.lang.namesValidator.

Пример: NamesValidator для Properties.

Дальнейшая кастомизация процесса переименования возможна на нескольких уровнях. Предоставив реализацию интерфейса RenameHandler, плагин способен полностью заменить пользовательский интерфейс и логику выполнения рефакторинга по переименованию, что также подразумевает возможность работы с чем-то отличным от PsiElement.

Пример: RenameHandler для переименования resource bundle.

Рефакторинг «Безопасное удаление»

Пример: реализация SafeDeleteProcessorDelegate для файлов *.properties.

Автоматическое форматирование кода

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

Если операция форматирования применяется не для всего файла (например, когда форматер вызывается для вставленного блока текста), полное дерево блоков не строится – вместо этого используются блоки покрывающее текстовый диапазон, переданный для форматирования и его прямой предок.

Настройки стиля кода

Для более гибкого управления настройками возможно зарегистрировать в точке расширения com.intellij.applicationConfigurable реализацию интерфейса Configurable, который представляет собой Java Swing форму, отображаемую в диалоге Settings.

Инспекции

Инспекции исходного кода для пользовательских языков используют тот же API, что и остальные инспекции и основываются на классе LocalInspectionTool.

Функциональность LocalInspectionTool частично дублирует Annotator, основные отличия заключаются в поддержке пакетной обработки кода (запускается действием «Analyze | Inspect Code. »), возможности отключить инспекции и настройке их опций. Если ничего из перечисленного не требуется, к примеру, анализ нужно запускать только в активном редакторе, то использование Annotator более выгодно, т.к. он обладает лучшей производительностью (благодаря поддержке инкрементального анализа) и большей гибкостью в плане подсветки ошибок.

Пользовательские Intentions (quickfix) также используют стандартный API, они должны предоставлять реализацию интерфейса IntentionAction, зарегистрированную в точке расширения в plugin.xml.

Пример: простой Intention для Groovy.

Отображение структуры кода

Для повторного использования встроенной реализации, плагин должен возвратить TreeBasedStructureViewBuilder из метода PsiStructureViewFactory.getStructureViewBuilder(). В качестве модели плагин может определить подкласс TextEditorBasedStructureViewModel, и переопределив его методы, настроить отображение структуры для пользовательского языка.

Базовый метод getRoot() возвращает экземпляр интерфейса StructureViewTreeElement. IDEA не предоставляет стандартной реализации этого интерфейса, поэтому плагин должен реализовать его полностью.

Обычно Structure View строится на основе PSI-дерева. В реализации метода StructureViewTreeElement.getChildren() должны быть представлены дочерние элементы текущего узла, которые будут отображены в структуре кода. Другой важный метод – это getPresentation(), который используется для настройки текста, атрибутов, иконки и т.д., показываемых в Structure View.

Реализация метода StructureViewTreeElement.getChildren() должна совпадать с TextEditorBasedStructureViewModel.getSuitableClasses(). Последний метод возвращает массив PsiElement, которые могут быть показаны как элементы структуры кода и использованы в качестве целевых элементов при наведении курсора, если активна опция «Autoscroll from source».

Функция «Surround With»

Когда выполняется действие «Surround With. «, IDEA опрашивает по очереди все дескрипторы, пока один не возвратит непустой массив из метода getElementsToSurround(). Тогда вызывается метод Surrounder.isApplicable() для каждого элемента массива, чтобы проверить могут ли применяться их шаблоны в данном контексте. Если пользователь выделяет определенный Surrounder в сплывающем меню, то выполняется его метод surroundElements().

Навигация до классов и литералов

Документация

Пример: DocumentationProvider для языка Properties.

Различные дополнительные функции

Некоторые типы скобок могут быть помечены структурными. Структурные скобки имеют больший приоритет, чем обычные: они сопоставляются друг другу даже в случае наличия несбалансированных скобок обычного типа между ними, к тому же неструктурная скобка не будет сопоставлена свой парной если одна находится внутри, а вторая снаружи блока структурных скобок.

Пример: комментатор для языка Properties.

Источник

Раздел «Refactor» в IDEA

Эту статью можно рассматривать как краткий обзор c gif-ками по рефакторингам Java-файлов в IDEA для начинающих.

Осторожно, много тяжелых gif-картинок.

intellij idea автоформатирование кода

«Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” —M. Fowler (1999)

Содержание

Введение

Думаю, каждый, кто работает в IDEA, знает, что в ней куча способов для рефакторинга кода. И почти уверен, что каждый второй смотрит анонсы новой версии, где красиво показаны новые способы рефакторинга и заглядывал в раздел Refaсtor:

intellij idea автоформатирование кодаРис. 1. Раздел Refactoring IDEA

Но не уверен, что все точно знают что и как делают все элементы этого списка, хотя они все детально описаны в справки к idea

В статье представлены фрагменты кода, порядок действий и анимации почти для каждого пункта. Также постарался добавить, где возможно, ссылку на замечательную книгу Refactoring: Improving the Design of Existing Code (Martin Fowler). Чтобы не сильно раздувать трафик пришлось довольно сильно обрезать много gif-картинок, поэтому обязательно смотрите использованный код под катом. Горячие клавиши приведены для Windows/LInux по умолчанию.

Раздел «Refaсtor»

Пойдем сверху вниз по порядку.

Пункт «Refactor This» (Ctrl+Alt+Shift+T)

Данный пункт используется для быстрого доступа к списку доступных способов рефакторинга. Заметьте, список зависит от места, где вы его вызываете. Здесь и далее в коде указывает на место каретки в коде, при вызове.

intellij idea автоформатирование кодаРис. 2. «Refactor This» для имени функции

intellij idea автоформатирование кодаРис. 3. «Refactor This» для аргументов функции

Пункт «Rename» (Shift+F6)

intellij idea автоформатирование кодаРис. 4. Переименование метода Использованный код

intellij idea автоформатирование кодаРис. 5. Переименование переменной Использованный код

Переименование вложенного класса

intellij idea автоформатирование кодаРис. 6. Переименование вложенного класса Использованный код

intellij idea автоформатирование кодаРис. 7. Переименование класса Использованный код

intellij idea автоформатирование кодаРис. 8. Переименование пакета Использованный код

Пункт «Rename File»

Переименовывает файл и ссылки на этот файл. В принципе можно вызывать через Shift+F6 если выделен файл. В диалоговом окне можно указать область поиска для переименований (Scope), искать ли ссылки или в комментариях и строчках

intellij idea автоформатирование кодаРис. 9. Пример использования «Rename File» Использованный код

Пункт «Change Signature» (Ctrl+F6)

У Фаулера этому посвящена глава “Change Function Declaration”. В новой версии IDEA «Change Signature» был немного доработан. Я знаю два пути:

Пример для первого способа (через изменения сигнатуры метода)

Изменяем сигнатуру метода. В этот момент слева появляется «R» и в контекстном меню появляется пункт «Update usages to reflect signature change», который позволяет обновить все использования метода.

intellij idea автоформатирование кодаРис. 10. Пример использования «Update usages to reflect signature change» Использованный код

Пример для второго способа (через диалоговое окно)

В диалоговом окне можно изменить состав переменных, exception, и даже сгенерировать переопределенный метод.

intellij idea автоформатирование кодаРис. 11. Пример использования «Change Signature»

Пункт «Edit Property Value» (Alt + F6)

На данный момент (Idea 2020.2) экспериментальная функция и по умолчанию не включена. Включить можно параметром property.value.inplace.editing=true Поэтому примеры не привожу.

Пункт «Type Migration» (Ctrl + Shift + F6)

Позволяет изменить тип переменной, включая сигнатуры методов, возвращаемый тип переменной.

intellij idea автоформатирование кодаРис. 12. Пример использования «Type Migration» Использованный код

Пункт «Make Static» (Ctrl + Shift + F6)

Позволяет сконвертировать метод или внутренний класс в статический. (Противоположность Convert To Instance Method)

intellij idea автоформатирование кодаРис. 13. Пример использования «Make Static» Использованный код

Пункт «Convert To Instance Method»

Позволяет сконвертировать статический метод в нестатический (противоположность ”Make Static”). При этом можно указать к какому классу будет относится новый метод.

intellij idea автоформатирование кодаРис. 14. Пример использования «Convert To Instance Method» Использованный код

Пункт «Move Classes» (F6)

В принципе делает, что и написано, перемещает классы.

intellij idea автоформатирование кодаРис. 15. Пример использования «Move Classes» Использованный код

Пункт «Copy Classes» (F5)

Многие программисты любят копировать файлы, а не начинать с чистого листа. Для этого прекрасно подходит F5. Меняем название на нужноe, указываем пакет и готово.

intellij idea автоформатирование кодаРис. 16. Пример использования «Copy Classes»

Пункт «Safe Delete» (Alt+Delete)

intellij idea автоформатирование кодаРис. 17. Пример использования «Safe Delete»

Пункт «Extract/Introduce»

intellij idea автоформатирование кодаРис. 18. Список доступных способов рефакторинга «Extract/Introduce»

Пункт «Variable» (Ctrl+Alt+V)

Создает новую переменную из выделенного фрагмента. (Этому способу у Фаулера посвящена глава “Extract Variable”).

intellij idea автоформатирование кодаVariable»» title=» Рис. 19. Пример использования «Extract/Introduce->Variable»» height=»395″ data-src=»https://habrastorage.org/getpro/habr/upload_files/229/bbe/e36/229bbee36d800fff7af6f54f54669962.gif» data-width=»770″/> Рис. 19. Пример использования «Extract/Introduce->Variable» Использованный код

Пункт «Constant» (Ctrl+Alt+C)

Создает новую константу из выделенного фрагмента.

intellij idea автоформатирование кодаConstant»» title=» Рис. 20. Пример использования «Extract/Introduce->Constant»» height=»395″ data-src=»https://habrastorage.org/getpro/habr/upload_files/ad5/c0d/613/ad5c0d6136d7be1e264f6a5a762fa838.gif» data-width=»770″/> Рис. 20. Пример использования «Extract/Introduce->Constant» Использованный код

Пункт «Field» (Ctrl+Alt+F)

Создает новое поле класса из выделенного фрагмента.

intellij idea автоформатирование кодаField»» title=» Рис. 21. Пример использования «Extract/Introduce->Field»» height=»395″ data-src=»https://habrastorage.org/getpro/habr/upload_files/21b/98d/5bc/21b98d5bcf89d9dae9c57d7fe07bea4a.gif» data-width=»770″/> Рис. 21. Пример использования «Extract/Introduce->Field» Использованный код

Пункт «Parameter» (Ctrl+Alt+P)

Создает новый параметр (функции) из выделенного фрагмента.

intellij idea автоформатирование кодаParameter»» title=»Рис. 22. Пример использования «Extract/Introduce->Parameter»» height=»395″ data-src=»https://habrastorage.org/getpro/habr/upload_files/7a4/ecd/354/7a4ecd354f89c7a6af76f79dd4e2157c.gif» data-width=»770″/> Рис. 22. Пример использования «Extract/Introduce->Parameter» Использованный код

Пункт «Functional Parameter»

Очень похож на пункт «Parameter», но теперь в функцию мы передаем или java.util.function.Supplier, или javafx.util.Builder. Обратите внимание, данный рефакторинг может привести к нежелательным эффектам.

intellij idea автоформатирование кодаFunctional Parameter»» title=»Рис. 23. Пример использования «Extract/Introduce->Functional Parameter»» height=»395″ data-src=»https://habrastorage.org/getpro/habr/upload_files/8da/c89/c80/8dac89c8095cf4a3d9a0eb2a42eaa165.gif» data-width=»890″/> Рис. 23. Пример использования «Extract/Introduce->Functional Parameter» Использованный код

Пункт «Functional Variable»

Очень похож на пункт «Variable», но теперь мы получаем или java.util.function.Supplier или javafx.util.Builder.

intellij idea автоформатирование кодаFunctional Variable» » title=» Рис. 24. Пример использования «Extract/Introduce->Functional Variable» » height=»496″ data-src=»https://habrastorage.org/getpro/habr/upload_files/07c/733/b78/07c733b783b867048e6bb6eaab7def51.gif» data-width=»890″/> Рис. 24. Пример использования «Extract/Introduce->Functional Variable»

Пункт «Parameter Object»

Удобный способ, когда в функцию передается много аргументов и вам надо обернуть их в класс. (У Фаулера это глава “Introduce Parameter Object”).

intellij idea автоформатирование кодаParameter Object» » title=»Рис. 25. Пример использования «Extract/Introduce->Parameter Object» » height=»948″ data-src=»https://habrastorage.org/getpro/habr/upload_files/15d/300/524/15d300524ee01e430bbc3d959fc0bab5.gif» data-width=»890″/> Рис. 25. Пример использования «Extract/Introduce->Parameter Object» Использованный код

Пункт «Method» (Ctrl+Alt+M)

intellij idea автоформатирование кодаMethod» » title=» Рис. 26. Пример использования «Extract/Introduce->Method» » height=»508″ data-src=»https://habrastorage.org/getpro/habr/upload_files/831/2ec/cc4/8312eccc4a4b1545b556781bcfd11a58.gif» data-width=»890″/> Рис. 26. Пример использования «Extract/Introduce->Method» Использованный код

Пункт «Type Parameter»

Рефакторинг из мира Kotlin, и для Java не применим (буду рад добавить, если кто-то сделает пример).

Пункт «Replace Method With Method Object»

Оборачивает выделенный фрагмент в объект. Может использоваться, если надо вернуть несколько объектов из метода (возвращает объект-обертку).

intellij idea автоформатирование кодаReplace Method With Method Object» » title=»Рис. 27. Пример использования «Extract/Introduce->Replace Method With Method Object» » height=»751″ data-src=»https://habrastorage.org/webt/fu/ae/ty/fuaetyf0d9wkdf_eeq0w0lpctma.gif» data-width=»953″/> Рис. 27. Пример использования «Extract/Introduce->Replace Method With Method Object» Использованный код

Пункт «Delegate»

Позволяет извлечь методы и поля в отдельный класс.

intellij idea автоформатирование кодаDelegate» » title=» Рис. 28. Пример использования «Extract/Introduce->Delegate» » height=»578″ data-src=»https://habrastorage.org/getpro/habr/upload_files/3e3/caf/a42/3e3cafa42da66c70bdbde562e46a1457.gif» data-width=»745″/> Рис. 28. Пример использования «Extract/Introduce->Delegate» Использованный код

Пункт «Interface»

Для заданного класса и его методов создает интерфейс. (Особенно удобно, когда при работе со Spring, когда кто-то забыл для компонента создать соответствующий интерфейс)

intellij idea автоформатирование кодаInterface» » title=» Рис. 29. Пример использования «Extract/Introduce->Interface» » height=»578″ data-src=»https://habrastorage.org/getpro/habr/upload_files/f64/52a/1f7/f6452a1f74ae6ef704fe74f3a255eedd.gif» data-width=»745″/> Рис. 29. Пример использования «Extract/Introduce->Interface» Использованный код

Пункт «Superclass»

Аналогично пункту «Interface», только теперь создается класс-родитель (Superclass). Фаулер описывает этот способ рефакторинга в главе “Extract Superclass”.

intellij idea автоформатирование кодаSuperclass» » title=»Рис. 30. Пример использования «Extract/Introduce->Superclass» » height=»578″ data-src=»https://habrastorage.org/getpro/habr/upload_files/f2c/e8b/5e7/f2ce8b5e70c1ac7cfdcf57f1702b0102.gif» data-width=»745″/> Рис. 30. Пример использования «Extract/Introduce->Superclass» Использованный код

Пункт «Subquery as CTE»

Пункт «RSpec ‘let’»

Пункт «Inline»

Возможно один из самых крутых методов рефакторинга, Инлайнить можно почти все. Фаулер описывает этот способ рефакторинга в главах “Inline Class”, “Inline Function”, “Inline Variable”.

intellij idea автоформатирование кодаРис. 31. Пример использования пункта «Inline» Использованный код

Пункт «Find and Replace code duplicate»

Ищет похожие фрагменты кода и предлагает заменить их, например, вызовом метода или константой.

intellij idea автоформатирование кодаРис. 32. Пример использования пункта «Find and Replace code duplicate»

Пункт «Invert Boolean»

Позволяет инвертировать булевые переменные.

intellij idea автоформатирование кодаРис. 33. Пример использования пункта «Invert Boolean» Использованный код

Пункт «Pull Member Up»

Позволяет перемещать методы или поля по иерархии вверх. Зачем это нужно написано у Фаулера в главах “Pull Up Field” и “Pull Up Method”. Выполняет обратную задачу пункта «Pull Member Down».

intellij idea автоформатирование кодаРис. 34. Пример использования пункта «Pull Member Up» Использованный код

Пункт «Pull Member Down»

intellij idea автоформатирование кодаРис. 35. Пример использования пункта «Pull Member Down» Использованный код

Пункт «Push ITds In»

Используется при работе с AsperctJ.

intellij idea автоформатирование кодаРис. 36. Пример использования пункта «Push ITds In» Использованный код

Пункт «Use Interface Where Possible»

IDEA старается заменить, где это возможно, указания классов на указание интерфейсов.

intellij idea автоформатирование кодаРис. 37. Пример использования пункта «Use Interface Where Possible» Использованный код

Пункт «Replace Inheritance with Delegation»

Заменяет наследование делегированием. У Фаулера про это главы “Replace Subclass with Delegate” и “Replace Superclass with Delegate”.

intellij idea автоформатирование кодаРис. 38. Пример использования пункта «Replace Inheritance with Delegation» Использованный код

Пункт «Remove Middleman»

intellij idea автоформатирование кодаРис. 39. Пример использования пункта «Remove Middleman»

Пункт «Wrap Method Return Value»

Оборачивает возвращаемое значение в объект-обертку. Удобно, когда нужно возвращать несколько связанных значений.

intellij idea автоформатирование кодаРис. 40. Пример использования пункта «Wrap Method Return Value»

Пункт «Encapsulate Field»

Скрывает поле за getter, setter.

intellij idea автоформатирование кодаРис. 41. Пример использования пункта «Encapsulate Field» Использованный код

Пункт «Replace Temp with Query»

с помощью этого способа рефакторинга вы можете заменить использование size на использование метода getActualSize(). Это приведет к увеличению количества вызовов методов, но в некоторых случаях может оказаться полезным. Пример так же показывает возможность извлечения метода с одновременным его дальнейшим использованием.

intellij idea автоформатирование кодаРис. 42. Пример использования пункта «Replace Temp with Query»

Пункт «Replace Constructor with Factory Method»

Генерирует фабричный метод для указанного конструктора. Идеально, если у вас нет Lombok. (У Фаулера этому посвящена глава “Replace Constructor with Factory Function”).

intellij idea автоформатирование кодаРис. 43. Пример использования пункта «Replace constructor with factory method» Использованный код

Пункт «Replace Constructor with Builder»

Генерирует builder для указанного конструктора. Идеально, если у вас нет Lombok.

intellij idea автоформатирование кодаРис. 44. Пример использования пункта «Replace Constructor with Builder» Использованный код

Пункт «Generify»

Пытается код с raw-типами превратить в код с Generic-типами. Актуален при миграции с java версий ранее 1.5 на современные версии.

intellij idea автоформатирование кодаРис. 45. Пример использования пункта «Generify» Использованный код

Пункт «Migrate»

Предоставляет готовые миграции для следующего списка:

intellij idea автоформатирование кодаРис. 46. Список доступных миграций пункта «Migrate»

Пункт «Lombok» и «Delombok»

Предоставляются плагином “Lombok”. Недавно было объявлено, что теперь он будет входить в стандартную поставку IDEA. Используется при работе с библиотекой кодогенерации “Lombok”.

Пункт «Internationalize»

Используется для интернационализации. К сожалению, в справке не нашел на данный момент информации. IDEA сейчас активно локализуется на другие языки, скорее всего для этого был разработан этот метод.

Список источников

Прекрасный доклад про атомарный рефакторинг от Тагира Валеева

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *