Лекция 9 по архитектуре Android. Заключение

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

Заключение

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

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

Во-вторых, паттерн MVP также можно считать стандартным подходом. Его можно использовать как в контексте Clean Architecture (в случае достаточно сложного приложения), так и самостоятельно, без лишних архитектурных слоев.

В-третьих, нужно всегда стремиться тестировать свои приложения максимально полно. Наиболее критичными являются тесты с точки зрения логики (делегат или Presenter), здесь нужно доводить процент покрытия кода тестами до 90-100%. Следующими по важности являются тесты для слоя данных, и уже после идут UI-тесты, которые предназначаются для уменьшения ручного тестирования базовых сценариев взаимодействия пользователя с приложением. Стандартом индустрии считается общее покрытие кода тестами в 70-80%.

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

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

Нужно ометить, что на конференции Google I/O 2017 наконец было представлено официальное видение компании Google на архитектуру Android-приложений, а также библиотеки для ее реализации. Советуем почитать статью на Хабре об этом.

Рекомендации для изучения

В ходе курса мы рассматривали в первую очередь вопросы, касающиеся архитектуры Android-приложений, но современные системы отнюдь не ограничиваются Android-приложениями. Поэтому есть много книг и статей, которые посвящены написанию чистого и красивого кода в общем, без приложения к конкретной системе. Конечно, это известные всем паттерны “Банды Четырех”, это книга “Совершенный код”. Кроме того, мы уже упоминали известную книгу Роберта Мартина “Чистый код”. По последней книге есть также очень интересный доклад, который стоит посмотреть.

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

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

Тренд этого года – это платформа Firebase, которая может очень сильно упростить жизнь разработчикам при решении различных задач, начиная от авторизации и пуш-сообщений, заканчивая базой данных реального времени и таргетированием. Несомненно, Google продолжит развивать его и интегрировать во многие другие компоненты, поэтому уметь работать с этой платформой необходимо.

Современные приложения должны постоянно улучшаться и становиться удобнее в использовании. К тому же все больше взаимодействий с какими-то сервисами сегодня происходит с мобильных приложений. По этим причинам в приложениях мы должны собирать информацию о действиях пользователя и анализировать ее. Для этого используются различные системы аналитики, например, Google Analytics, Firebase Analytics, Mixpanel, Flurry, Mint и другие. Все эти системы разные, и их различия нужно понимать, чтобы уметь применять каждую из этих систем на практике.

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

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

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

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

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

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

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

Додати коментар