diff --git a/translated/uk_ua/develop/ide-tips-and-tricks.md b/translated/uk_ua/develop/ide-tips-and-tricks.md new file mode 100644 index 000000000..d08c47158 --- /dev/null +++ b/translated/uk_ua/develop/ide-tips-and-tricks.md @@ -0,0 +1,319 @@ +--- +title: Поради та підказки IDE +description: Корисна інформація для ефективної обробки та проходження проєкту за допомогою IDE. +authors: + - JR1811 + - AnAwesomGuy +--- + +# Поради та підказки IDE {#ide-tips-and-tricks} + +Ця сторінка надає корисну інформацію, щоб прискорити та полегшити процес розробки. Включіть їх у свій, на свій смак. +Може знадобитися деякий час, щоб освоїти ярлики та інші параметри та звикнути до них. Ви можете використовувати цю сторінку як орієнтир для цього. + +:::warning +Прив’язки клавіш у тексті стосуються типової розкладки IntelliJ IDEA, якщо не вказано інше. +Якщо ви використовуєте іншу розкладку клавіатури, зверніться до налаштувань `Файл > Налаштування > Розкладка клавіш` або знайдіть цю функцію в іншому місці. +::: + +## Перегляд проєктів {#traversing-projects} + +### Власноруч {#manually} + +IntelliJ має багато різних способів проходження проєктів. Якщо ви створили джерела за допомогою команд `./gradlew genSources` у терміналі або +використовували завдання Gradle `Tasks > fabric > genSources` у вікні Gradle, ви можете вручну переглядати вихідні файли Minecraft у зовнішніх бібліотеках вікна проєкту. + +![Завдання Gradle](/assets/develop/misc/using-the-ide/traversing_01.png) + +Вихідний код Minecraft можна знайти, якщо ви шукаєте `net.minecraft` у зовнішніх бібліотеках вікна проєкту. +Якщо ваш проєкт використовує розділені джерела з онлайн-[генератор шаблонів модів](https://fabricmc.net/develop/template), буде два джерела, як зазначено в назві (client/common). +Крім того, інші джерела проєктів, бібліотек і залежностей, які імпортуються через файл `build.gradle`, також будуть доступні. +Цей метод часто використовується під час перегляду ресурсів, тегів та інших файлів. + +![Зовнішня бібліотека](/assets/develop/misc/using-the-ide/traversing_02_1.png) + +![Розділення джерела](/assets/develop/misc/using-the-ide/traversing_02_2.png) + +### Пошук {#search} + +Двічі натиснувши <0>Shift, відкриється вікно пошуку. Там ви можете шукати файли та класи вашого проєкту. При активації прапорця `включити непроєктні елементи` або натиснувши Shift ще раз двічі, пошук здійснюватиметься не лише в вашому власному проєкті, а й в інших, наприклад у зовнішніх бібліотеках. + +Ви також можете використовувати комбінації клавіш ⌘/CTRL+N для пошуку в класах і ⌘/CTRL+Shift+< 0>N для пошуку в усіх _файлах_. + +![Пошук екрану](/assets/develop/misc/using-the-ide/traversing_03.png) + +### Останнє вікно {#recent-window} + +Іншим корисним інструментом в IntelliJ є вікно `Останні`. Ви можете відкрити його за допомогою комбінації клавіш <0>⌘/CTRL+<0>E. +Там ви можете переходити до файлів, які ви вже відвідали, і відкривати вікна інструментів, наприклад [структура](#structure-of-a-class) або [закладки](#bookmarks). + +![Останнє вікно](/assets/develop/misc/using-the-ide/traversing_04.png) + +## Код проходження {#traversing-code} + +### Перейти до визначення / Використання {#jump-to-definition-usage} + +Якщо вам потрібно перевірити визначення або використання змінних, методів, класів та інших речей, ви можете натиснути <0>⌘/CTRL+<0>ЛКМ/B +або скористайтеся <0>СКМ (натиснувши коліщатко мишки) на їхніх іменах. Таким чином ви можете уникнути тривалих сеансів прокручування чи посібника +пошук визначення, яке знаходиться в іншому файлі. + +Ви також можете використовувати ⌘/CTRL+⌥/Shift+ЛКМ/B, щоб переглянути всі реалізації класу чи інтерфейсу. + +### Закладки {#bookmarks} + +Ви можете робити закладки для рядків коду, файлів або навіть відкритих вкладок редактора. +Особливо під час дослідження вихідних кодів це може допомогти позначити місця, які ви хочете швидко знайти знову в майбутньому. + +Або натисніть ПКМ по файлу у вікні `Проєкт`, вкладку редактора або номер рядка у файлі. +Створення `Мнемонічних закладок` дає вам змогу швидко повернутися до цих закладок за допомогою їхніх гарячих клавіш, <0>⌘/CTRL і цифри, яку ви вибрали для них. + +![встановлення закладку](/assets/develop/misc/using-the-ide/traversing_05.png) + +Можна створити кілька списків закладок одночасно, якщо вам потрібно розділити або впорядкувати їх у вікні `Закладки`. +Там також показано [точки зупину](./basic-problem-solving#breakpoint). + +![Екран щакладки](/assets/develop/misc/using-the-ide/traversing_06.png) + +## Аналіз класів {#analyzing-classes} + +### Структура класів {#structure-of-a-class} + +Відкривши вікно `Структура` (⌘/Alt+7), ви отримаєте огляд свого поточного активного класу. Ви можете побачити, які класи та переліки +знаходяться в цьому файлі, які методи були реалізовані та які поля та змінні оголошені. + +Іноді це може бути корисним, +щоб також активувати опцію `Успадковано` у верхній частині параметрів перегляду під час пошуку потенційних методів для перевизначення. + +![Структура вікна](/assets/develop/misc/using-the-ide/analyzing_01.png) + +### Ієрархія типів класу {#type-hierarchy-of-a-class} + +Розмістивши курсор на назві класу та натиснувши <0>⌘/CTRL+<0>H, ви можете відкрити нове вікно ієрархії типів, у якому показано всі батьківські та дочірні класи. + +![Вікно ієрархії типів](/assets/develop/misc/using-the-ide/analyzing_02.png) + +## Утиліта коду {#code-utility} + +### Завершення коду {#code-completion} + +Завершення коду має бути активовано за замовчуванням. Ви автоматично отримуватимете рекомендації під час написання коду. +Якщо ви закрили його випадково або просто перемістили курсор у нове місце, ви можете скористатися клавішами ⌘/CTRL+Пробіл, щоб знову відкрити їх. + +Наприклад, використовуючи лямбда-вирази, ви можете швидко записати їх за допомогою цього методу. + +![Лямбда з багатьма параметрами](/assets/develop/misc/using-the-ide/util_01.png) + +### Генерація коду {#code-generation} + +Меню «Створити» можна швидко відкрити за допомогою Alt+Insert (⌘ Command+N на Mac) або вибравши до `Код` у верхній частині та виберіть `Створити`. +У файлі Java ви зможете генерувати конструктори, геттери(getters), сетери(setters), перевизначати або реалізовувати методи та багато іншого. +Ви також можете генерувати засоби доступу та виклики, якщо у вас встановлено [плаґін розробки Minecraft](./getting-started/setting-up-a-development-environment#minecraft-development). + +Крім того, ви можете швидко замінити методи за допомогою <0>⌘/CTRL+<0>O і реалізувати методи за допомогою <0>⌘/CTRL+<0>I. + +![Меню створення коду у файлі Java](/assets/develop/misc/using-the-ide/generate_01.png) + +У тестовому файлі Java ви зможете створити такі методи тестування, як: + +![Меню створення коду в тестовому файлі Java](/assets/develop/misc/using-the-ide/generate_02.png) + +### Показ параметрів {#displaying-parameters} + +Показ параметрів має бути активовано за замовчуванням. Під час написання коду ви автоматично отримаєте типи та назви параметрів. +Якщо ви закрили їх випадково або просто перемістили курсор у нове місце, ви можете скористатися <0>⌘/CTRL+<0>P, щоб відкрити їх знову. + +Методи та класи можуть мати кілька реалізацій з різними параметрами, також відомі як перевантаження. Таким чином ви можете вирішити, який +реалізацію, яку ви хочете використати, під час написання виклику методу. + +![Показ параметрів методу](/assets/develop/misc/using-the-ide/util_02.png) + +### Рефакторинг {#refactoring} + +Рефакторинг — це процес реструктуризації коду без зміни його функціональності під час виконання. Перейменування та безпечне видалення частин коду є частиною цього, але такі речі, як вилучення частин коду в окремі методи та введення нових змінних для повторюваних операторів коду, також називаються «рефакторингом». + +Багато IDE мають великий набір інструментів, щоб допомогти в цьому процесі. У IntelliJ просто натисніть ПКМ по файлу або частині коду, щоб отримати доступ до доступних інструментів рефакторингу. + +![Рефакторинг](/assets/develop/misc/using-the-ide/refactoring_01.png) + +Особливо корисно звикнути до прив’язки клавіш інструмента рефакторингу `Перейменувати`, Shift+F6, оскільки ви, ймовірно, перейменовуєте багато речей у майбутньому. +За допомогою цієї функції кожне входження перейменованого коду буде перейменовано та функціонально залишиться незмінним. + +Ви також можете переформатувати код відповідно до свого стилю коду. +Для цього виберіть код, який потрібно переформатувати (якщо нічого не вибрано, буде переформатовано весь файл) і натисніть <0>⌘/CTRL+<0>⌥/ALT+<0 >L. +Щоб змінити спосіб форматування коду IntelliJ, перегляньте параметри у меню «Файл» > «Параметри» > «Редактор» > «Стиль коду» > «Java». + +#### Контекстні дії {#context-actions} + +Контекстні дії дозволяють рефакторювати певні розділи коду на основі контексту. +Щоб скористатися нею, просто перемістіть курсор до області, яку потрібно рефакторингувати, і натисніть ⌥/ALT+Enter або клацніть лампочку ліворуч. +Буде спливне вікно з контекстними діями, які можна використовувати для вибраного коду. + +![Приклад контекстних дій](/assets/develop/misc/using-the-ide/context_actions_01.png) + +![Приклад контекстних дій](/assets/develop/misc/using-the-ide/context_actions_02.png) + +### Пошук і заміна вмісту файлу {#search-and-replace-file-content} + +Іноді для редагування коду потрібні простіші інструменти. + +| Комбінація клавіш | Функція | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| ⌘/CTRL+F | Знайти в поточному файлі | +| ⌘/CTRL+R | Замінити в поточному файлі | +| <0>⌘/CTRL+<0>Shift+<0>F | Знайти у більшій області (можна встановити певну маску типу файлу) | +| ⌘/CTRL+Shift+R | Замінити у більшій області (можна встановити певну маску типу файлу) | + +Якщо використовуються, усі ці інструменти дозволяють більш конкретне зіставлення шаблону через [Regex](https://en.wikipedia.org/wiki/Regular_expression). + +![Regex заміна](/assets/develop/misc/using-the-ide/search_and_replace_01.png) + +### Інші корисні комбінації клавіш {#other-keybinds} + +Виділення тексту та використання ⌘/CTRL+Shift+<0>↑ Вгору / ↓ Вниз може перемістити виділений текст вгору або вниз. + +В IntelliJ сполучення клавіш для «Повторити» може бути не звичайним ⌘/CTRL+Y (Видалити рядок). +Натомість це може бути <0>⌘/CTRL+<0>Shift+<0>Z. Ви можете змінити це в **мапі клавіш**. + + + +Ще більше сполучень клавіш можна знайти в [документації IntelliJ](https://www.jetbrains.com/help/idea/mastering-keyboard-shortcuts.html). + +## Коментарі {#comments} + +Хороший код має бути легко читабельним і [самодокументованим](https://bytedev.medium.com/code-comment-anti-patterns-and-why-the-comment-you-just-wrote-is-probably-not -необхідно-919a92cf6758). +Вибір виразних імен для змінних, класів і методів може дуже допомогти, але іноді потрібні коментарі, щоб залишити примітки або **тимчасово** відключити код для тестування. + +Щоб швидше закоментувати код, ви можете виділити текст і використати <0>⌘/CTRL+<0>/ (рядковий коментар) і <0>⌘/CTRL+< 0>⌥/Shift+<0>/ (заблокувати коментар) сполучення клавіш. + +Тепер ви можете виділити потрібний код (або просто навести на нього курсор) і за допомогою комбінацій клавіш закоментувати розділ. + +```java +// private static final int PROTECTION_BOOTS = 2; +private static final int PROTECTION_LEGGINGS = 5; +// private static final int PROTECTION_CHESTPLATE = 6; +private static final int PROTECTION_HELMET = 1; +``` + +```java +/* +ModItems.initialize(); +ModSounds.initializeSounds(); +ModParticles.initialize(); +*/ + +private static int secondsToTicks(float seconds) { + return (int) (seconds * 20 /*+ 69*/); +} +``` + +### Складання коду {#code-folding} + +В IntelliJ поруч із номерами рядків ви можете побачити маленькі значки зі стрілками. +Їх можна використовувати для тимчасового згортання методів, операторів if, класів і багатьох інших речей, якщо ви активно над ними не працюєте. +Щоб створити спеціальний блок, який можна згорнути, використовуйте коментарі `region` і `endregion`. + +```java +// region collapse block name + ModBlocks.initialize(); + ModBlockEntities.registerBlockEntityTypes(); + ModItems.initialize(); + ModSounds.initializeSounds(); + ModParticles.initialize(); +// endregion +``` + +![Згортання регіону](/assets/develop/misc/using-the-ide/comments_02.png) + +:::warning +Якщо ви помітили, що використовуєте забагато з них, подумайте про рефакторинг коду, щоб зробити його більш читабельним! +::: + +### Вимкнення форматувальника {#disabling-formatter} + +Коментарі також можуть вимкнути засіб форматування під час рефакторингу коду, згаданого вище, оточуючи фрагмент коду так: + +```java +//formatter:off (disable formatter) + public static void disgustingMethod() { /* ew this code sucks */ } +//formatter:on (re-enable the formatter) +``` + +### Припинення перевірок {#noinspection} + +Коментарі `//noinspection` можна використовувати для вимкнення перевірок і попереджень. +Вони функціонально ідентичні анотації `@SuppressWarnings`, але без обмеження анотації та можуть використовуватися в заявах. + +```java +// below is bad code and IntelliJ knows that + +@SuppressWarnings("rawtypes") // annotations can be used here +List list = new ArrayList(); + +//noinspection unchecked (annotations cannot be here so we use the comment) +this.processList((List)list); + +//noinspection rawtypes,unchecked,WriteOnlyObject (you can even suppress multiple!) +new ArrayList().add("bananas"); +``` + +:::warning +Якщо ви помітили, що приховуєте забагато попереджень, подумайте про те, щоб переписати свій код, щоб не створювати так багато попереджень! +::: + +### Примітки TODO та FIXME {#todo-and-fixme-notes} + +Під час роботи над кодом може стати в нагоді залишати примітки про те, про що ще потрібно подбати. Іноді ви також можете помітити +потенційна проблема в коді, але ви не хочете переставати зосереджуватися на поточній проблемі. У цьому випадку використовуйте +Коментарі `TODO` або `FIXME`. + +![Коментарі TODO та FIXME](/assets/develop/misc/using-the-ide/comments_03.png) + +IntelliJ відстежуватиме їх у вікні `TODO` і може повідомити вас, якщо ви зафіксуєте код, +який використовує такі типи коментарів. + +![Коментарі TODO та FIXME](/assets/develop/misc/using-the-ide/comments_04.png) + +![Здійснити за допомогою TODO](/assets/develop/misc/using-the-ide/comments_05.png) + +### Javadocs {#javadocs} + +Чудовим способом документування вашого коду є використання JavaDoc. +JavaDocs не тільки надає корисну інформацію для реалізації методів і класів, але й глибоко інтегровано в IntelliJ. + +При наведенні курсора на імена методів або класів, до яких додано коментарі JavaDoc, вони показуватимуть цю інформацію у своєму інформаційному вікні. + +![JavaDoc](/assets/develop/misc/using-the-ide/comments_06.png) + +Щоб почати, просто напишіть `/**` над визначенням методу або класу та натисніть enter. IntelliJ автоматично згенерує рядки для значення, що повертається +і параметри, але ви можете змінити їх як завгодно. Доступно багато спеціальних функцій, і ви також можете використовувати HTML, якщо потрібно. + +У класі `ScreenHandler` Minecraft є кілька прикладів. Щоб увімкнути режим промальовування, використовуйте кнопку пера біля номерів рядків. + +![Редагування JavaDoc](/assets/develop/misc/using-the-ide/comments_07.png) + +## Подальша оптимізація IntelliJ {#optimizing-intellij-further} + +Є багато інших ярликів і зручних хитрощів, які виходять за рамки цієї сторінки. +Jetbrains має багато хороших доповідей, відео та сторінок документації про те, як ще більше налаштувати робочий простір. + +### Завершення PostFix {#postfix-completion} + +Використовуйте PostFix Completion, щоб змінити код після його швидкого написання. Часто використовувані приклади містять `.not`, `.if`, `.var`, `.null`, `.nn`, `.for`, `.fori`, `.return` та `.new`. +Крім існуючих, ви також можете створити власні в налаштуваннях IntelliJ. + + + +### "Живі" шаблони {#live-templates} + +Використовуйте живі шаблони, щоб швидше генерувати власний шаблонний код. + + + +### Більше порад і підказок {#more-tips} + +Антон Архипов з Jetbrains також детально розповів про зіставлення регулярних виразів, завершення коду, налагодження та багато інших тем в IntelliJ. + + + +Для отримання додаткової інформації відвідайте [сайт Jetbrains з порадами та підказками](https://blog.jetbrains.com/idea/category/tips-tricks) і [документацію IntelliJ](https://www.jetbrains.com/ допомога/ідея/початок роботи). +Більшість їхніх публікацій також стосуються екосистеми Fabric.