Як збільшити швидкість написання коду: ШІ, генерація коду та плагіни

Як збільшити швидкість написання коду: ШІ, генерація коду та плагіни

29.05.2023
Автор: HostZealot Team
2 мін.
406

Написання великих масивів коду є повсякденною рутиною будь-якого розробника. Однак, з метою оптимізації роботи, зараз виникає все більше різних способів прискорити написання коду. У сьогоднішній статті ми хочемо розглянути різні інструменти і техніки, які можуть допомогти прискорити написання коду, включно з використанням штучного інтелекту, генерацією коду і плагінами.

Генерація коду

Одним з ефективних підходів до скорочення обсягу написаного коду є генерація коду. Мінімізація коду, написаного безпосередньо в додатку, дає змогу підвищити його стабільність і зменшити кількість помилок.

Java Annotation Processing (APT)

Відомим методом генерації коду є Java Annotation Processing (APT), який широко використовується в таких бібліотеках, як Dagger, Hilt і Room. Проте APT має певні недоліки, як-от збільшення часу збирання та обмеження на модифікацію наявних класів Java.

Щоб APT працював у проєктах мовою Kotlin, використовується KAPT (Kotlin Annotation Processing Tool), що генерує Java-стаби, які потім обробляються процесором анотацій. Хоча APT дає змогу уникнути використання рефлексій може бути оптимізована, вона вносить додаткову складність і впливає на час складання.

Kotlin Symbol Processing (KSP) – це альтернатива APT, спеціально розроблена для коду Kotlin. Вона усуває необхідність у додаткових кроках, таких як KAPT, і обіцяє швидшу генерацію коду порівняно з APT. KSP побудований поверх плагінів компілятора Kotlin, що забезпечує потенційну оптимізацію в майбутніх версіях.

Плагін Gradle

Крім створення проектів, Gradle можна використовувати для включення функцій генерації коду. Різні плагіни, як-от ViewBinding, DataBinding, Apollo GraphQL, protobuf і SQLDelight, можуть допомогти в генерації коду з джерел, відмінних від Kotlin/Java, як-от XML-ресурси Android або SQL-запити.

Плагіни компілятора Kotlin

Плагіни компілятора Kotlin пропонують унікальні можливості для генерації коду. Прикладами плагінів є Kotlin Serialization, KSP і Jetpack Compose. Ці плагіни дають змогу реалізувати додаткові можливості та модифікації коду, які виходять за рамки того, що зазначено у вихідному коді.

IDE

Інтегроване середовище розробки (IDE) є одним із провідних інструментів для прискорення написання коду. Android Studio або IDEA, основні IDE для розробки Android, пропонують також безліч вбудованих функцій. Крім того, функціональність IDE може бути розширена за рахунок використання плагінів.

Сode completion 

Сode completion, що надається IDE, значно підвищує швидкість написання коду. Воно позбавляє від необхідності запам'ятовувати імена конкретних класів або шукати документацію. Автозаповнення пропонує відповідні класи або методи на основі контексту, роблячи кодування більш швидким і ефективним.

Live Templates

IDE, такі як IDEA та Android Studio, пропонують функцію під назвою Live Templates. Ці шаблони дозволяють розробникам використовувати скорочення або ярлики для швидкої генерації часто використовуваних конструкцій коду. Користувацькі живі шаблони можна створити на основі наявних або з нуля, що дає змогу заощадити час на написання повторюваного коду.

Плагіни

IDE можуть бути розширені за рахунок плагінів, які надають додаткові можливості генерації та модифікації коду. Однак розробка і підтримка модулів, що підключаються, може бути складним завданням, що вимагає сумісності з декількома версіями API. Написання плагінів для IDEA полегшується зверненням до вихідного коду IDEA Community Edition.

Шаблони Android Studio

Android Studio надає власний механізм генерації коду за допомогою шаблонів. Хоча він пропонує різні можливості та регулярно поповнюється новими шаблонами, додавання користувацьких шаблонів наразі не підтримується. Однак це обмеження може змінитися з майбутніми оновленнями.

Geminio від HH

Geminio, розроблений компанією HH, є вартим уваги рішенням для генерації коду. Воно дає змогу генерувати шаблони коду, відомі як рецепти, які можуть охоплювати кілька файлів і навіть генерувати модулі Gradle. Перевагою Geminio є зберігання шаблонів усередині проекту, що дає змогу здійснювати версіонування та огляд коду.

Сode completion за допомогою ШІ

Зважаючи на поширення ШІ в різних галузях, включно з мобільними ОС і апаратним прискоренням, настав час розглянути можливість використання ШІ для написання коду. З рішень у цій царині, вартим уваги є AlphaCode, випущений дочірньою компанією Google, нейронна мережа, яка досягла успіху в завданнях Codeforces, що поєднують критичне мислення, логіку, алгоритми, кодування і розуміння природної мови. 

Але в рамках цієї статті ми хочемо розглянути технології ШІ, призначені для допомоги в написанні коду, а не для заміни реального розробника. 

Одним із таких рішень є GitHub Copilot – ШІ-компаньйон для роботи з кодом, навчений на проєктах GitHub. Хоча підтримка Kotlin не є офіційною, вона все одно працює гідно. Однак код, на якому він навчається, також може містити помилки, що позбавляє нас гарантії релевантних результатів. Крім того, він вимагає підключення до Інтернету і відправляє ваш код на сервер, що викликає побоювання з приводу конфіденційності.

TabNine – ще одне гідне згадки рішення. Хоча воно працює тільки онлайн, його можна розмістити у себе (self-host), що дасть вам змогу навчати модель на власній кодовій базі. Це приваблює компанії, які приділяють особливу увагу цілісності та безпеці даних.

Хоча кодування за допомогою ШІ може бути швидшим, важливо зазначити, що сервіси не гарантують якість коду, і вони можуть запропонувати застарілий або недосконалий код. З цієї причини найімовірнішим сценарієм розвитку подій буде те, що ми перейдемо від інженерів-програмістів до інженерів з якості коду.

Висновок

У статті вище ми представили кілька інструментів, які можуть полегшити вам написання коду. Як ви самі побачили, за допомогою різних підходів вони можуть надати велику допомогу в прискоренні написання коду. Зокрема, написання коду за допомогою ШІ потенційно може взяти на себе більшу частину роботи програмістів. Однак поки що жоден підхід не може забезпечити нас бездоганним кодом, який не потребував би редагування, тому компетентність у сфері коду є необхідною якістю, щоб справді отримати користь з обговорюваних інструментів.

.



# Як зробити Поділитися:
Статті за темою