В чому був сенс для створення Android Studio обирати IntelliJ IDEA?
Ось і вийшла вже 3 версія Android Studio. На жаль, для мене дива не сталось. Ті самі хвилини очікування поки все скомпілюється в черговий раз("розкіш" давно забута завдяки Eclipse). Все ті ж банальні незручності з написанням коду, все той же перевантажений, незручний і відверто не красивий UI.
Але найбільше мене в цій історії хвилює те, що скрізь я чую зовсім інше. Всі навкруги розхвалюють Idea, радіють що Google відмовився нарешті від Eclipse на користь цієї чудової IDE. Дехто взагалі вже не бачить жодного майбутнього для Eclipse бо Idea зовсім затьмарило саме Затемнення. Отже виходить так, що я щось не розумію, випускаю з уваги, щось дуже важливе, або просто не зрозумів, як користуватись чудовим інструментом.
Допоможіть, будь ласка, мені розібратись.
Ось деякі з тих речей, які я зовсім не розумію:
1)Перше і найголовніше. Інкрементний компілятор. Коли він з’явився для Java з Eclipse ще на початку цього століття, я вважав, що було зроблено цілу революцію в розробці ПЗ. Бо завдяки цій новації відпала ціла фаза в процесі кодування. І хоч вона не була такою вже складною, але займала чимало часу і вимотувала. Можливо ви ще пам’ятаєте Turbo Pascal та Turbo C, коли другий переважав перший тим, що після невдалої компіляції показував всі знайдені синтаксичні помилки, тоді як перший зупинявся одразу на першій же помилці і треба було натискати до нестями F9 виправляючи усілякий бруд типу забутої точки з комою.
З Eclipse ця проблема взагалі зникла, бо ви одразу бачите і виправляєте всі синтаксичні проблеми по всьому проекту(а не лише тільки у файлі де зараз редагуєте). Це особливо критично, коли ви робити великий кусень роботи, редагуєте багато файлів і не можете достатньо довго все скомпілювати. А отже коли ви скінчите то принаймні синтаксичні проблеми вас вже не будуть турбувати.
Ну і звичайно дуже приємно, що програма в Eclipse, завдяки цьому чудовому компілятору, весь час підтримується готовою, а отже запуск не змушує вас чекати на черговий білд процес.
Це дуже важливо саме під час розробки, виправлення помилок, тестування. Хоч потім і потрібно буде все перекомпілювати для продакшну і т.і. Але один раз можна і почекати, а от коли це робиш по 100 разів на хвилину...
З Android Studio довелось згадати про старий добрий Turbo Pascal з його одною помилкою на один білд, шкода тільки, що на відміну від AS Turbo Pascal, що робив це миттєво на нормальних комп’ютерах, тут доводиться сидіти і чекати, виправляти і знову чекати.
А як інакше дізнатись в AS, що наприклад зміна параметрів вашого методу зламала десь виклик в якомусь іншому файлі окрім, як перебілдити все, почекавши на список помилок? Та й то видасть воно не все і не за раз.
Тільки не кажіть мені нічого про функції Refactoring, бо мова тут не про це, а це окрема тема, яка теж в AS викликає багато питань.
2)Інша велика проблема це авто виправлення. Це так зручно, що в Eclipse я давно вже не пишу весь код вручну, велику частку його просто генерую за допомогою цієї чудової функції. Просто Ctrl+1 і готово. В AS ця функціональність є і все б нічого, але ж який в ній сенс, якщо для того, щоб отримати бажаний результат треба було підводити курсор саме під те місце, на якому AS зрозуміє, що ви хочете? От наприклад, пишу:
myVar = getMyVar();
Зрозуміло, що коли я допишу, то курсор буде стояти після точки з комою, в Eclipse я просто натиснув Ctrl+1 вибрав локальну змінну і поїхав далі. А в AS? Доводиться витрачати сили та час, щоб поставити курсор десь на мою myVar і тільки тоді.... І так скрізь! Коли робиш це багато разів за день, то можна і втомитись.
3)З автоімпотом взагалі біда. Стільки різних опцій, як це налаштувати, але все працює жахливо, імпортує щось не те і не так. В Eclipse пишеш собі, автопідказка сама вставляє, якщо треба, а вже якщо щось і не вставилось просто робиш Organize Import і все автоматично імпортується(викидається зайве), а все що автоматично не можна зробити, те запитають в одному діалозі. Просто і ефективно. В AS я знайшов Optimize Import, але робить воно що завгодно, але не те що треба.
Окремо треба зазначити, просте копіювання файлів з іншого проекту, з іншими пакетами. Як це просто в Eclipse і яке це нещастя в AS!
4)Навігація по коду. В Eclipse прямо на тулбарі є цілий спектр можливостей для цього. Вперед, назад(що було до 3 версії і в AS, але прибрали навіть це), Вперед/Назад по останнім правкам коду(чи є взагалі таке в AS?). А переміщатись по Occurrences? Те що банально просто робиться в Eclipse в AS теж робиться, але... ну судіть самі, щоб це зробити в AS треба виділити те що треба побачити в інших місцях, здогадатись натиснути Ctrl+Shift+F7, ну а потім, це ж логічно, тиснути F3. Ну і в кінці, коли ви натішитесь, то не забудьте ж ще і вийти з цього чудового режиму!
5)Взагалі організація робочого простору в AS — це проблема. Все змішано в одну купу, але наприклад перетягати вікна так, як треба дуже не проста задача. Як наслідок, ви будете весь час бачити купу зайвого і непотрібного, а те що треба, щоб побачити доведеться докладати зусилля.
В Eclipse це вирішили дуже елегантним рішенням — Перспективами(Perspectives). Ви можете створити собі перспективу для кожного виду робіт і рухати drug-n-dropом будь-яке вікно, як завгодно і куди завгодно. В AS це не тривіальне завдання. Є якісь особливі зони, туди можна перетягнути вікно, але зорганізувати ще і ці зони...
6)З генерацією коду те ж не все гаразд. Скажімо, як і в Eclipse я можу згенерувати геттер та сеттер, але от управляти де його вставити... як? Схоже тільки, якщо попередньо поставити в потрібному місці курсор. Який тоді сенс з такої герерації? А іноді взагалі виходив анекдот! Геренував я нове поле для неоголошеної змінної і одразу після натискання Згенерувати кудись випадково кілкав, так частина поля генерувалась в потрібному місці, а частина там де я клікнув. Мабуть, щоб весь час тримати програміста в тонусі.
7)Форматування коду. Щоб воно почало в AS переносити строчки коду і вміщувати їх по ширині сторінки, треба окремо ще подбати в налаштуваннях. Але ж як воно це робить!!!! Як вам сподобається какий код?
someFunc
();
8)Те що AS сам за вас все автоматично зберігає, а Eclipse змушує про це дбати користувача(хоча насправді Eclipse вміє і це) подається як велике досягнення! Але чого ж це «досягнення» ніяк не можна вимкнути?
Я взагалі, ненавиджу програми, які вважають що вони розумніші за їх користувачів, можливо це і є основною проблемою, чому я ніяк не можу осягнути всю велич AS? Але ж мені потрібний режим, коли я сам вирішую коли зберігати на диску зміни. Іноді дуже зручно, щось почати робити, щоб потім все відкинути одним дуже невимушеним рухом, щоб навіть згадки про це не залишалось.
9)Велика біда в AS з декаруванням гілок дерева проекту. В Eclipse як глянув так одразу бачиш і де не закомічені зміни є(навіть не розгортаючи дерева), де помилки, де ворнінги, який бренч і т.і.
В AS навіть те що можна побачити, ще треба пам’ятати, як інтерпретувати. Бо помічати лише коліром статус файлу...
10)Взагалі організація роботи з репозиторіями це окрема тема. AS вміє все і одразу, але як і завжди універсалізм буває лише за рахунок якості. Як дізнатись під яким юзером ви робите коміт в Git? Це не просто не тривіальне завдання для AS, а може створити серйозні проблеми, які відберуть купу часу та сил, як це було у мене.
Ну а зважаючи на п.9 можна взагалі дуже просто пропустити закомітити, якісь нові файли.
Окрема тема з файлами .idea. Я для себе досі не вирішив, чи треба їх комітити. Вони весь час змінюються, але це мало на що впливає по суті. Лише ще одне зайве заняття для користувача.
...Гадаю для форуму я вже написав забагато, хоча можна продовжувати і продовжувати, написати про жахливий дебагер, невеселі іконки, на яких хтось явно заощадив, щоб не платити професійному дизайнеру, постійні підвисання та підгальмовування.
Отже що я роблю не так? Чому зараз превалює в загалі думка про те що IntellyJ IDEA настільки переважає Eclipse, що Google не пошкодувала часу та ресурсів, щоб відмовитись, хоч і не ідеального, але цілком зрілого та такого, що можна було без проблем допрацювати до ідеалу, ADT на Eclipse, та створили новий IDE на базі IntelliJ IDEA, який м’яко кажучи в порівнянні з Eclipse залишився десь у XX сторіччі, а головне, що сам процес розробки для Android не покращився, а погіршився?
88 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів