чего следует избегать…

В течение 2 лет я окунался в разработку приложений для Android, и, хотя я сильно продвинулся, было много наивных ошибок, которые я сделал на этом пути.

Когда вы учитесь самостоятельно, следуя инструкциям в Интернете, часто случаются ошибки, особенно если вы новичок. Но, как говорится, вы учитесь на своих ошибках, и именно тогда вы добиваетесь значительного прогресса.

Итак, не имеет значения, являетесь ли вы новичком в разработке приложений для Android или опытным, имейте в виду, что вы не сознательно или неосознанно совершаете те ошибки, которые сделал я.

1. Опоздание на вечеринку

Я так хотел бы начать изучать разработку приложений для Android намного раньше, ведь есть чему поучиться, и она продолжает расти с каждым днем. Поверьте, если вы не решаетесь начать сейчас, просто сделайте это, нет лучшего времени для начала, чем сейчас.

Кроме того, если вы знакомы с JavaScript и у вас возникли негативные эмоции от изучения Java, вы можете создавать приложения для Android с помощью расширения Facebook React Native, не теряя своих знаний в области JS.

«Если я должен с чего-то начать, то это лучшее место, которое только можно представить, прямо здесь и сейчас». - Ришель Э. Гудрич

2. Захватываем все в Activity или Fragment

Когда вы только начинаете, очень часто пишут все, каждый метод внутри одного Activity или Fragment. Я тоже это сделал, и каков результат? Чертовски запутанная кодовая база.

Разделите элементы пользовательского интерфейса на отдельные представления или виджеты и обработайте изменения для элемента внутри класса для этого элемента. Создайте служебные классы и перенесите соответствующие служебные методы в эти классы вместо того, чтобы выстраивать методы в Activity или Fragment.

Это не только делает ваш код более чистым, но также увеличивает возможность повторного использования ваших элементов и методов, что в конечном итоге экономит время в будущем.

«Не язык делает программы простыми. Именно программисты делают язык простым! »
- Роберт К. Мартин

3. Не использовать систему управления версиями для вашей кодовой базы.

Это одна из самых распространенных ошибок новичков. Частое резервное копирование вашей кодовой базы на флэш-накопитель или внешний жесткий диск может быть как болезненным, так и небезопасным, так как вы можете забыть о резервном копировании или потерять весь код из-за какой-то мелкой ошибки.

Начните использовать Github или Bitbucket для безопасного хранения вашего проекта Android и дополнительных изменений, которые вы вносите с течением времени.

Хотя я лично предпочитаю и рекомендую Github, если вы не желаете оплачивать ежемесячную плату за Github, вы можете либо подать заявку на студенческий пакет (если вы один), либо использовать Bitbucket , который в любом случае предоставляется бесплатно для группы до 5 человек.

«Безопасность - дешевый и эффективный страховой полис». - Неизвестный

4. Слишком много вложений в макетах.

Android страдает от рендеринга макетов, в которых слишком много вложений, поскольку система должна проходить каждый уровень и соответственно рендерить весь материал. Хотя в большинстве случаев это может не быть проблемой, но оптимизация макетов гарантирует, что макеты приложений будут отображаться с наименьшей задержкой.

При написании XML для макета знайте, какую ViewGroup использовать, чтобы вы могли выполнить свои требования, используя минимально возможное вложение. Очень простой и распространенный пример: в большинстве случаев вы можете преобразовать LinearLayout в RelativeLayout, правильно используя позиционирование элементов внутри макета, вместо того, чтобы иметь 2–3 уровня глубины LinearLayout для того же эффекта.

Удаленный код - это отлаженный код. - Джефф Сикел

5. Жесткое кодирование строк в коде XML и Java.

Легко быть ленивым и вводить строки в XML-макете или Java-коде при установке любого текста для TextView или EditText подсказки. Хотя этот подход поможет вам справиться с большинством случаев без каких-либо проблем, вы будете раскаиваться, когда вам придется изменить какой-то общий текст или заставить ваше приложение говорить на нескольких языках.

С самого начала выработайте привычку размещать строки в общем strings.xml или на отдельных strings.xml для каждого языка, если вы поддерживаете несколько языков, это дает вам гибкость в управлении своими строками с минимальными усилиями.

«Гибкость - величайшая сила». - Стивен Рэдхед

6. Незнание о последних изменениях API.

Android постоянно меняется, как и их API. Поэтому, чтобы убедиться, что ваше приложение правильно работает для каждого пользователя, вам необходимо знать об изменениях, внесенных в существующие API.

Классическим примером этого является AlarmManager API, он был изменен на уровне API 19 (KitKat), чтобы сделать планирование сигналов тревоги неточным по сравнению с точным в предыдущих версиях. Он снова изменился на уровне API 23 (MarshMallow) для поддержки Doze.

Таким образом, если вы пропустите эту оптимизацию, высока вероятность того, что ваши будильники не будут запланированы должным образом, и ваши пользователи могут пропустить это уведомление, или ваш Service может не запуститься, когда это было запланировано.

Что ж, внедрение новых технологий всегда влияет на то, как мастера ведут бизнес. - Дайан Дуэйн

7. Отказ от расширенного тестирования после увеличения targetSdk.

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

Помните, когда Android представил разрешения времени выполнения в MarshMallow? Что же произошло бы, если бы вы просто увеличили свой targetSdk с 21 или 22 до 23, не запрашивая явно разрешения времени выполнения в вашем коде, и надеялись, что ваше приложение будет работать нормально?

Да, вы, наверное, догадались, что ваши пользователи увидят красивое короткое сообщение «К сожалению, AppName перестало работать».

Это происходит потому, что, когда ваше приложение настроено на более низкий уровень SDK, Android предполагает, что ваше приложение не оптимизировано для новых изменений, и поэтому не будет требовать никаких проверок. Однако при обновлении до нового уровня SDK вы подтверждаете, что ваше приложение соответствует изменениям, внесенным на новом уровне.

«Нет ничего плохого в надежде на лучшее, если вы готовы к худшему». - Стивен Кинг

8. Игнорирование утечек памяти в вашем приложении.

Android или любая операционная система - это общая экосистема, в которой каждое приложение должно вести себя как порядочный гражданин и не поглощать память устройства, как динозавр.

Лучший способ обеспечить такое поведение - убедиться, что ваше приложение не имеет утечек памяти или имеет наименьшее количество утечек. Очень распространенная ошибка - создание статических ссылок на весь Activity или Fragment. Это создает огромную утечку памяти, поскольку система хранит всю Activity или Fragment ссылку, даже если она не требуется.

Есть и другие многочисленные мелкие и большие утечки памяти, которые возникают, если вы плохо выполняете домашнее задание. К счастью, наши друзья из Square создали библиотеку под названием LeakCanary для обнаружения всевозможных утечек памяти, чтобы вы могли разработать герметичное приложение, не ломая себя.

Небольшая утечка потопит большой корабль. - Бенджамин Франклин

9. Раздача вашей кодовой базы потенциальным ворам на блюдечке с голубой каемочкой.

Если вы еще не слышали о декомпиляции APK, вас ждет сюрприз. Если код вашего приложения плохо защищен и запутан, то чертовски легко перепроектировать ваше приложение с помощью бесплатных инструментов, доступных в Интернете.

Это приводит к тому, что либо конкуренты овладевают вашей бизнес-логикой, либо хакеры пытаются найти эксплойты в вашем приложении.

Android Studio предлагает ProGuard, бесплатный инструмент для обфускации ваших кодов на основе некоторых правил, которые вы применяете. С включенным ProGuard ваш код будет выглядеть тарабарщиной для людей, пытающихся перепроектировать ваш APK.

Поскольку ProGuard - это бесплатный инструмент, он эффективен лишь в определенной степени. Тем не менее, это старший брат, DexGuard, плотно закрывает ваше приложение даже от самых жестоких злоумышленников, но за это стоит немало.

Оборудование легко защитить: запереть его в комнате, привязать к столу или купить запасное. Информация создает большую проблему. Он может существовать более чем в одном месте; перевезти через половину планеты за секунды; и быть украденным без вашего ведома. - Брюс Шнайер

10. Надеемся, что ваши пользователи сообщат о сбоях

Что делает большинство людей, когда видят сбой приложения? Они либо пытаются снова, либо просто нажимают кнопку Удалить. Что ж, есть некоторые пользователи-ангелы, которые на самом деле испытывают боль, сообщая нам о сбое, но это очень небольшая группа людей.

Поскольку Android - это обширная экосистема, и почти каждый производитель модифицирует ОС в соответствии со своими требованиями, наиболее вероятно, что ваше приложение может вылетать на различных устройствах. Однако, поскольку большинство пользователей предпочитают не сообщать о сбоях, вы никогда об этом не получите.

Итак, вместо того, чтобы полагаться на сообщения пользователей о сбоях, примените собственный механизм автоматического создания отчетов о сбоях. Прикрепите Crashlytics из пакета Twitter’s Fabric к своему проекту, и все готово. Теперь о каждом сбое будет автоматически сообщаться без вмешательства пользователя.

Бездефектного программного обеспечения не существует. - Витсе Венема

11. Не дружить с IDE

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

Изучите различные сочетания клавиш, которые вы можете использовать для плавной и быстрой навигации по базе кода, а также для того, чтобы помочь вам писать код быстрее и с меньшими усилиями.

Чтобы привыкнуть к этому, может потребоваться некоторое время, но как только вы освоитесь, это поможет сэкономить много времени и усилий как при написании приложения, так и при его отладке.

Мы формируем наши инструменты, а потом наши инструменты формируют нас. - Маршалл Маклюэн

На этом пока все, ребята. Приветствую вас за то, что вы стали лучшим разработчиком приложений для Android!

Если вам понравилась эта история, порекомендуйте ее другим, нажав кнопку 💚 на этой странице, и подпишитесь на меня, чтобы узнать больше.