Шишки і граблі Android-розробника за 2 роки

image

Я добре пам'ятаю той день у далекому 2014 році, коли я вирішив зайнятися програмування під Android. Це виявилося кращим рішенням, яке я взяв у моєму житті. Вже пройшло майже два з половиною роки, і за цей час у мене можливість дечого навчитися.

Коли я тільки почав, я не знав нікого, хто міг би навчити мене, показати, як правильно потрібно робити. І я зробив БЕЗЛІЧ помилок, так само витратив купу часу на те, щоб потім їх виправити.

Півтора року тому, мені випав шанс попрацювати з дуже талановитими і досвідченими Android-розробники, які направляли мене і допомогли мені привести все в порядок. Ці дві складові багато чому мене навчили. Я зрозумів, що треба РОБИТИ, а найголовніше, що НЕ ТРЕБА.

І вже якийсь час я, як можу, намагаюся допомагати іншим розробникам — прямо або побічно. Ось мої профілі: StackOverflow і Github.

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

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

Підтримка публікації — компанія EDISON, яка реалізувала систему розпізнавання великовагових ТЗ та ведення цифрового протоколу, а так само розробила графічний користувальницький інтерфейс для микротомографа.

1. Не потрібно заново винаходити колесо
Спочатку я вирішив не користуватися бібліотеками з відкритим вихідним кодом. Щоб мені не було потрібно, я все хотів зробити самостійно. Це була дуже погана ідея.

Якщо у вас виникає якась проблема під час покращення вашого додатки, і якщо цю проблему вже до вас хтось вирішив, то чому б не скористатися цим? Так ви зможете заощадити багато часу.

Краще сконцентруйтеся на бізнес логікою програми. Якщо ви хочете здійснювати дзвінки в додатку, то для цього вам не потрібно винаходити Retrofit.

Бонус: Чоловічий Arsenal містяться майже всі Android бібліотеки, створені коли-небудь. Перевірте.

2. Вибирайте бібліотеки грамотно.
Безліч бібліотек з відкритим кодом доступно на Github безкоштовно. Але не варто цього сильно радіти, і тут же починати ними користуватися.

Перевірте скільки зірок у бібліотеки, чим більше зірок, тим краще. Подивіться, якщо у творця бібліотеки ще якісь популярні роботи. І перевірте обговорення (відкриті і закриті), вони можуть дати вам краще уявлення про те, наскільки стабільна і стійка бібліотека в дії.

Якщо ви маєте час, то варто перевірити код цієї бібліотеки і зрозуміти, чи варто це того.

Ви просто переконайтеся, що код, який ви збираєтеся використовувати, надійний, без помилок і якісний.

Підказка: ви можете перевірити будь-яку бібліотеку прямо з командного рядка, використовуючи Dryrun.

image

3. Зробіть собі каву, присядьте і почитайте коди
Ми витрачали більше часу на читання чужих кодів, а не написання своїх. Якщо ви так не робіть, то ПОЧНІТЬ сьогодні.

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

Одна з найбільш чудових речей в Android — це те, що це повністю відкрита платформа. Відкрийте код і подивіться, як вони втілили його. На сайті Github представлені тисячі бібліотек з відкритим кодом. Просто виберете одну і подивіться, як розробник її зробив.

Бонус: Ось список найкращих бібліотек, а тут список майже всіх додатків для Android з відкритим кодом. Не дякуйте.

4. Заради бога, підтримуйте стандарти кодування на належному рівні
Якщо ви порівнюйте написання коду з написанням, тоді стандарти кодування — це почерк.
Так само як ви читаєте коди, створені іншими, так само і інші люди будуть читати ваш код. А ви ж не хочете налякати їх? І якщо ви працюєте разом з іншими розробниками, то вам варто звернути на це увагу.

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

Код немов поезія.

І не скаржтеся, якщо ви напишіть код, а ваші колеги кілька днів не будуть з вами розмовляти.

Бонус: І ще вам варто прочитати , это.

5. Вам потрібен ProGuard, так він вам точно потрібен!
Ніколи, ніколи не викладайте програми в Play Store, не використовуючи ProGuard. ProGuard не тільки скоротить ваш код, але так само заплутає код, тобто утруднить аналіз, розуміння алгоритмів роботи при зворотній розробці (реверс-інжиніринг).

Це безкоштовно і йде в комплекті з Android SDK. І немає ніяких причин, щоб не скористатися цим.

Я бачив, як кілька розробників завантажили свої додатки в Play Store без ProGuard. І у не таких вже й умілих хакерів зайняло не більше кількох годин, щоб скористатися ситуацією.

Підказка: Але якщо вам потрібна захист краще, то варто скористатися не ProGuard, а DexGuard.

6. Використовуйте продуману архітектуру
Повірте, ви будете довго дякувати себе, якщо спочатку виберете нормальну архітектуру.
Ви можете використовувати MVP (Model-View-Presenter), це розділить код на рівні, тим самим збільшить гнучкість коду і зменшить час обслуговування.

Ось демо-проект для початку. І якщо ви вже промучившись із цим, але у вас нічого не вийшло, то ось детальна інструкція для новачків.

Бонус: Почитайте , і зверніть увагу на . Це може допомогти вам з MVP.

image

7. Користувальницький інтерфейс як жарт. Якщо вам доводиться його пояснювати, то це поганий інтерфейс
Якщо ви працюєте на компанію, і ваша посада — простий Android — розробник, то, швидше за все, вам не потрібно переживати з-за цього, т. к. в компанії напевно є UI/UX дизайнери, які відповідають за інтерфейс.

Але якщо ви працюєте самостійно, то вам необхідно запам'ятати перейматися цим. Я вже зустрічав розробників, які створили дійсно хороші, функціональні програми, але користувальницький інтерфейс (UI) виглядав жахливо, а досвід взаємодії (UX) чи дозволяв користуватися додатком.

Створюйте простий, зрозумілий і красивий інтерфейс, який буде радувати око. Ви повинні думати не просто як розробник, а спробуйте сконцентруватися на дизайнері всередині вас.

Спробуйте справити враження на користувачів за допомогою красивого інтерфейсу, щоб їм захотілося скористатися вашим додатком ще раз і навіть більше (придбати преміум-версію, наприклад).

Краще вже видалити елементи дизайну, ніж додати зайві. Дизайн повинен бути простим і мінімалістичним.

Бонус: Ви завжди можете знайти натхнення, переглянувши роботи популярних дизайнерів Dribble або MaterialUp. Так само є книга, яку ви, можливо, захочете прочитати, якщо ви зацікавлені.

8. Аналітика — ваш кращий друг
Якщо ви хочете створити дійсно хороший додаток, то вам потрібно восползоваться службою аналітики, яка дозволить з'ясувати продуктивність і застосування певних частин вашого додатка.

Під аналітикою я маю на увазі і звіти про помилки, і відстеження відвідувань, тому вам знадобиться ця інформація.

Що б ви не робили, у вас ніколи не вийде скликати вчинене додаток. Коли користувачі почнуть користуватися вашим додатком на різних пристроях з операційною системою Android, і навіть різними версіями Android, ви побачите, що навіть найкращі коди «впадуть».

Звіти про помилки допоможуть вам відстежувати і виправляти їх вчасно.

Вам так само варто почати мислити як маркетолог і аналізувати використання певних функцій додатка. Це допоможе вам усунути різницю між тим, який додаток ви створили і яким його хочуть бачити користувачі.

Підказка: Скористайтесь Firebase Crash and Reporting Analytics і ви ще подякуйте мене за це.

10. Станьте ніндзей маркетингу
Якщо ви індивідуальний розробник, то вам потрібно не тільки «розробляти», але і так само розбиратися в маркетингу.

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

Якщо ви серйозно налаштовані і хочете, щоб ваші програми дійшли до широкої аудиторії, то вам доведеться витратити час і гроші на рекламу. Але перш ніж розпочати рекламну кампанію, переконайтеся, що ваш додаток вже повністю готове. Ви ж хочете, щоб кожна витрачена копійка повернулася, так?

Витратьте час на вивчення конкурентів і те, як ви можете обійти їх. Визначте, кого ви вже обійшли, а кого тільки належить.

Підказка: ось доступний сайт для аналізу ринку. Мені він подобається

10. Настав час оптимізації
Це як раз те, що більшість з нас не робить, але це необхідно.

Є велика різниця між «написанням коду» і «написанням оптимізованого коду».

Пишіть код, який швидко працює і займає менше пам'яті.

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

Перевірте, скільки пам'яті займає ваш додаток і не відбувається витік пам'яті.

Пам'ятайте, що навіть маленька текти топить великий корабель. Витратьте час і розберіться зі складальником сміття (Garbage Collector) і дампи куп (heap dumps).

Підказка: скористайтесь Leak Canar для пошуку витоку пам'яті. Це може заощадити вам купу часу

11. Економте по 5 і більше годин в тиждень з Gradle
Швидше за все, ви користуєтеся Android Studio для поліпшення додатків, і Gradle в якості системи автоматичного складання. Gradle безумовно хороший, але він дуже повільний. І стає навіть повільніше равлики, коли розмір вашого додатки починає збільшуватися.

Я пам'ятаю нескінченні години, які я провів в очікуванні, поки Gradle завершити роботу. Під час завантажених буднів у мене йшло близько години тільки очікування. А це 5 годин на тиждень.

Але завжди є можливість прискоритися.

Ви можете наслідувати поради, а також , і прискорити швидкість збірки. Раніше у мене займало 4 хвилини, а після оптимізації у мене йде близько 30 секунд.

12. Тестуйте, тестуйте, і ще раз тестуйте!
Немає нічого більш важливого, ніж тестування. Це взагалі те, що повинно бути першим у списку.

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

Одного разу я зробив помилку — я випустив додаток занадто швидко, не встигнувши нормально його протестувати. Я думав, що користувачі зіткнутися з купою помилок, відправлять звіти, а я вже їх виправлю.

Ніколи, ніколи так не робіть. Так, ви можете заощадити день, або два, або тиждень, але вам потім доведеться витратити в два рази більше.

Ніколи не робіть що-небудь поспіхом, всьому свій час. Мисліть довгостроковими перспективами. Час сіяти і час пожинати

13. Фрагментація в Android — Диявол під прикриттям

image

Фрагментація — це одна з основних проблем Android і, здається, що Google не збирається вирішувати цю проблему, так що, вам доведеться самим справлятися.

Безліч пристроїв працюють на Android, і у них у всіх різний розмір екрану і технічні характеристики. Достаток виробників, які підганяють операційну систему під технічне оснащення пристрою.

До цього ще варто додати різні версії Android, Google додає/прибирає інтерфейс прикладного програмування (Application Programming Interface), що ще більше збільшує навантаження (ось наочний приклад).

Наприклад, жоден Android-розробник не закінчив створення програми без використання SharedPreferences API. Це так поширене, хоча це не підійшло Samsung Galaxy S на Android 2.2 (ось звіт про помилку).

Витратьте час на створення різних макетів для екранів різного розміру. Протестуйте на різних пристроях з різною версією Android і т. д.

Ніколи не думайте, що програма буде працювати, тільки тому що так здається.

14. Почніть користуватися Git!
Якщо ви ще не користуєтеся Git, то саме час почати.

Коли я тільки зайнявся програмування під Android, то я, на жаль, не знав, що таке Git. Мені доводилося копіювати повністю версії своєї програми кожен день, і зберігати одну копію на жорсткому диску, і ще одну в «хмарі». Нерозумно, так? Так.

Git може поліпшити ваш потік робіт (workflow). Якщо хтось попросить мене назвати програму, якою я користуюся кожен день, та, яку я б не зміг перестати використовувати, то це безумовно буде Git.

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

А коли ви почнете великий проект, і заплутаєтеся в тому, як же все-таки варто підтримати модель розгалуження, то вам допоможе .

Бонус: якщо ви тільки почали, і ще не можете дозволити собі щомісячну плату за особисте сховище на GitHub, то вам варто скористатися BitBucket — він абсолютно безкоштовний.

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

Ви ж не хочете, щоб це сталося з вашим додатком?

Тоді вам слід знати, як захистити додаток за допомогою API ключів. Якщо ви маєте справу з уразливими даними, то ви повинні знати, як зашифрувати, який саме вибрати алгоритм (безпечний, а не швидкий).

Ви так само повинні зберігати ключі шифрування або на сервері або на локальному диску (якщо потрібно). Так само вам варто захистити додаток від копіювання за допомогою ADB (Android Debug Bridge). Якщо ж ви зберігаєте вразливі дані в базі даних, переконайтеся, що заплутали код.

А що якщо преміум версія програми буде зламана і виставлена безкоштовно? Ви понесете збитки.

Є кілька речей, які ви можете зробити, щоб не допустити підробки свого додатка. Звичайно, немає 100% захисту. Будь-який досвідчений хакер з необхідною інформацією, програмами та наявністю бажання зможе зламати ваш додаток.

Все, що ви можете зробити — це ускладнити завдання. Захистіть додаток, щоб хакеру було не просто зламати його.

Бонус: Почитайте цю і цю статті. Це положет гарний початок.

16. Створюйте програми і на бюджетному девайсі
Мені, як і всім подобається користуватися дорогими смартфонами. Але таким пристроєм варто користуватися тільки в особистих цілях, а не для розробки програми.

Лідируючі моделі дейвайсов будуть приховувати безліч недоліків. Припустимо, ви робите щось пов'язане з призначеним для користувача інтерфейсом (UI), що призведе до помилок у інтерфейсі, але на потужному пристрої ви можете цього навіть не помітити.

Старий, бюджетний смартфон з купою встановлених додатків — найкращий варіант.

image

17. Вкладайте в вивчення Design Patterns
Таке вкладення буде окупатися постійно.

Під час створення складну програми, ви зустрінетеся з кількома стандартними проблемами, які вже були вирішені більш компетентними людьми. Рішення проблем — шаблони проектування.

Почніть витрачати трохи часу з сьогоднішнього дня на вивчення Java Design Patterns. проект Github, який демонструє всі шаблони проектування відомі людству.

Краще всього почати з вивчення таких важливих, як Одинак (Singleton), Адаптер (Adapter), Фабричний метод ( Factory Method), Ітератор (Iterator), Впровадження залежності (Dependency Injection), Будівельник (Builder), Стратегія (Strategy).

Здається, що їх надто багато? Насправді, немає. Вам вони сподобаються.

Підказка: почитайте книги, начебто, Джошуа Бліх «Java. Ефективне програмування» і Мартін Фаулер «Рефакторинг».

18. Час віддавати
Нам всім допомагали люди, що нас оточують. Давайте це визнаємо.

image

Якщо у вас якась проблема, то перше, що ви робите — це шукайте відповідь в Google і на сайті StackOverflow. Іноді, коли у вас немає часу, ви просто копіюєте і вставляєте вже готове рішення з відповіді, який набрав більшу кількість лайків.

Навіть безкоштовні бібліотеки з сайту Github, якими ви користуєтеся, як вони економлять ваш час і зусилля. А все тому, що хтось колись витратив свій час на те, щоб створити це, а виклав в інтернет, щоб зробити світ трохи краще.

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

І ось настав час відплатити. Чим більшим ви поділіться, тим більше ви отримаєте взамін
Ми всі зайняті своєю роботою, і нам так важко керувати часом і зробити щось для інших. Але можна спробувати знайти трохи часу, і зробити це Android співтовариство краще.

Я спробував поділитися деякими речами, які я зрозумів за час короткої подорожі з Android. Але я продовжу цей шлях, дізнаюся більше, і мені буде чим поділитися. Сподіваюся, що це допоможе кому-небудь, та спростить життя.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.