На перших етапах навчання розробці додатків для Android новачки стикаються з безліччю складнощів. Вони елементарно вирішуються професіоналом, але часто становлять складне завдання для новачка.
Також часто буває, що новачки через незнання формують у себе неправильний підхід до написання програмного коду і, самі того не підозрюючи, ускладнюють собі роботу в майбутньому.
Додаткова складність полягає в тому, що навіть найпростіші додатки для Android – це складні програми, що включають сотні файлів і рядків коду. Запустити їх з першого разу без помилок досить непросто.
Володимир Анісімов – практикуючий Android-розробник з більш ніж 7-річним досвідом у нативній і мультиплатформенній розробці – розібрав 5 типових помилок новачків зі свого досвіду і дав лайфхаки, які допоможуть їх вирішити.
Застосовуючи їх, розробник-початківець зможе значно полегшити собі навчання на перших порах і в кінцевому результаті стати фахівцем високого класу з гідною оплатою праці.
Помилка #1. Шукати помилку самостійно і намагатися усунути її вручну, якщо проєкт не запускається
Уявіть, що ви заходите в код свого проєкту і бачите приблизно таку картинку:
Весь код виділено червоним, водночас додаток не запускається.
Перша думка: одразу перевіряти код, шукати помилку і намагатися виправити її вручну. Однак такий підхід на початкових етапах і без досвіду в розробці може призвести до нових помилок.
Замість цього краще зробити наступне
1) Знайти рядок з описом помилки
Набір тексту на скріншоті нижче називається лог. У ньому вже є інформація про помилку, потрібно тільки її знайти.
Ключове слово тут – Exception (але може бути й Error), опис помилки знаходиться поруч із ним. Його потрібно скопіювати і вставити в пошуковик Google.
Помилки, які трапляються найчастіше, вже розібрані на форумах і сайтах для розробників. Ви з великою ймовірністю зможете знайти рішення своєї проблеми.
Також ваше середовище розробки може підказати конкретне місце в програмі, де сталася помилка. Це виділені синім посилання:
Бачачи місце в коді з помилкою і знаючи опис, набагато легше її виправити.
Якщо ця помилка створена вами як розробником (наприклад, помилка в коді), виправляти її потрібно виключно вручну.
Якщо помилка – всередині системи (наприклад, не встановлено потрібну бібліотеку з даними), тоді її потрібно усувати відповідно до рекомендацій у балці.
2) Спробувати позбутися помилки за допомогою 4 кнопок в Android Studio, про які не знають багато новачків
Спробуйте їх натиснути, якщо потрібно усунути помилку, але ви не розумієте, що робити:
Rebuild Project
Вона знаходиться у вкладці Build:
Ця кнопка дає змогу перезібрати проєкт, усунувши помилки.
Синхронізувати проєкт із gradle-файлами
Ця кнопка знаходиться у вкладці File:
Логічно, що, якщо немає зв’язку між файлами проєкту і gradle файлами (тими, що збирають частини проєкту в єдину систему), – застосунок не працюватиме. Кнопка Sync project with gradle files вирішує цю проблему.
Clean project
Ця кнопка очищає проєкт від тимчасових файлів збірки. Це корисно, коли ви змінюєте щось у коді, але не бачите змін під час перезапуску проєкту.
Якщо після натискання цієї кнопки помилку не усунуто, можна повернутися до попередніх двох і знову натиснути їх.
Кнопка Clean project знаходиться на вкладці Build:
Invalidate caches
Ця кнопка – найрадикальніший засіб у боротьбі з помилками. Її варто натискати, коли проєкт не запускається, Clean Project не працює і суть помилки ви теж не розумієте.
Invalidate caches очищає тимчасові файли вже самої Android Studio.
Вона знаходиться у вкладці File:
Варто зазначити, що ці поради спрямовані на новачків, більш досвідчені розробники знають, що і коли краще використовувати.
Помилка #2. Неправильне найменування змінних
Ця помилка зустрічається, напевно, у 80% розробників-початківців. Вона не критична, проте робить код складним і нечитабельним.
Ось, як це виглядає на прикладі:
У чому складність із такими іменами змінних?
Ще зі школи ми звикли змінні називати буквами a, b, c. Однак у програмуванні так робити небажано, бо через деякий час важко буде розібратися, яка буква що означає.
Це ключовий момент: код має бути зрозумілий не тільки комп’ютеру, а й людині.
Якщо ви назвете змінні подібним чином, можливо, у момент розроблення ви пам’ятатимете, що вони означають. Однак, повернувшись до цього коду через місяць, ви можете забути, що мали на увазі. Особливо, якщо код складний і складається з десятків і сотень рядків.
Потрібно буде знаходити, де змінні a, b, c були введені, і відновлювати логіку в себе в голові.
А якщо ваш код читатиме інша людина, у неї піде ще більше часу на те, щоб його зрозуміти
Іноді розробник намагається врятувати таку ситуацію за допомогою коментарів до змінних:
Однак, до коментарів все одно доведеться повертатися. До того ж, вони обтяжують код, адже тепер доведеться читати сам код і коментарі до нього.
Називати змінні потрібно відразу так, щоб вони самі себе пояснювали:
У цьому разі назва змінної – money – відразу приблизно дає розуміння, про що йдеться. А в ідеалі потрібно уточнити, що за money, наприклад назвавши змінну так: moneyOnBalance.
Візьмемо приклад складніший:
Це код для розрахунку балансу на рахунку під час купівлі товару вартістю p і знижкою d.
У цьому випадку змінним задано літерні імена – p, d. Ім’я bal має більш зрозумілий і читабельний вигляд, але все одно не є ідеальним.
Спробуйте вникнути в суть формули. Спробували? Скільки разів ви бігали очима від літери у формулі до пояснення, що вона означає?
А ось так слід було б оформити цей код:
Тепер код можна читати майже як книжку і не потрібно витрачати час і зусилля на визначення того, що означає та чи інша буква.
Помилка #3. Зайва логіка в коді
Розробники-початківці часто намагаються прописати все в коді по максимуму, задати змінні, без яких можна обійтися. Це зайві елементи, які тільки ускладнюють код.
Наприклад, розробник задає 4 окремі змінні і потім використовує їх у коді:
Створення окремих змінних може бути обґрунтованим – у тому випадку, якщо ці змінні будуть використовуватися в коді далі багато разів. Тоді цей підхід дійсно спростить код і заощадить час розробнику. Але в конкретному фрагменті кожна змінна використовується в коді тільки один раз.
Також у коді зроблено помилку з назвами змінних (див. помилку #2). Про що вам говорить message1? Що таке 1? І чим відрізняється від message2?
Як можна спростити цей код і прибрати всі помилки:
Відразу задати значення, які мають видаватися за певних умов без введення змінних.
Код одразу став на 4 рядки коротшим, його легше читати і сприймати.
Помилка #4. Фокусування на абстрактних завданнях
Коли ви вивчаєте програмування за книжками, відео-курсами чи навіть разом із викладачем і вже знаєте певні функції, на їхнє відпрацювання вам можуть дати абстрактне завдання, яке, ймовірно, не стане в пригоді для роботи.
Наприклад: обчислити факторіал числа, розв’язати квадратне рівняння, перепробувати всі варіанти сортування даних.
Ці завдання добре розвивають алгоритмічне мислення і можуть бути корисні на початкових етапах, але захоплюватися ними не варто. Вони приведуть вас до того, що ви добре мислитимете алгоритмами, але водночас зможете писати лише прості та «математизовані» програми.
Краще якомога раніше почати виконувати завдання, пов’язані з реальним життям і роботою програміста: наприклад, розробити обчислювач для світлофора або програму для обробки покупок.
Помилка #5. Нехтування можливостями режиму Debug
Якщо розроблена вами програма запускається, проте видає не ті значення, які вам потрібні (і які правильні), не поспішайте шукати помилку вручну. Для цього є режим Debug.
Щоб запустити програму в ньому, потрібно замість звичайної кнопки запуску натиснути кнопку у формі жука, що знаходиться поруч із нею:
У цьому режимі ви зможете побачити, що відбувається під час запуску програми в режимі реального часу.
У цьому режимі можна зупинити роботу програми в будь-якому місці, при цьому на екран виводиться поточне значення змінних на даний момент:
Якщо видно, що змінні мають неправильні значення, перевіряємо код у конкретному рядку, експериментуємо з введеними елементами, поки не отримаємо потрібне значення змінної.
Ця функція дає змогу не перевіряти весь код (як часто роблять новачки) і не вигадувати «милиці», а перевірити конкретно ті місця, в яких ви підозрюєте наявність помилки.
Що це за помилка і що з нею робити – потрібно буде визначити самостійно (на відміну від критичної помилки, через яку застосунок не запускається), однак завдяки режиму Debug ви матимете розуміння, в який момент роботи застосунку та в якій частині коду вона з’являється і як це виправити.