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

Не повторяйся

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

Вспомогательная функция и служебные классы

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

Включить тег

Если вам необходимо скопировать код из макета XML, вам следует рассмотреть возможность использования тега включения (или тега слияния). В этом может помочь туториал от Android-разработчиков. Как я это делаю, и я бы порекомендовал это другим, я называю общий макет content_something. Например, content_header, и каждый раз, когда вы видите макет XML, начинающийся с содержимого, вы будете знать, что это общий макет для нескольких макетов. Я начал делать это очень рано, потому что увидел, что когда вы запускаете новый проект Android Studio, внутри activity_main есть тег включения с макетом с именем content_main.

Узнайте, как создавать настраиваемые представления

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

Проведите исследование и начните использовать архитектурный шаблон

Все мои студенческие проекты Android состояли из 2–3 активностей, и весь код был внутри них. Около 300–500 строк кода было трудно ориентироваться и особенно отлаживать. Архитектурные паттерны упоминались в лекции по курсу Android, и у нас с ними были образцы кода. Поскольку архитектурные шаблоны не были обязательным требованием в нашем студенческом задании, для каждого учащегося естественно избегать ненужных осложнений, которые не повлияют на оценку. Гораздо позже, когда я готовился к собеседованию и проходил онлайн-курс, я начал использовать архитектурные шаблоны. Этот краткий обзор от Гики для гиков — хорошая отправная точка, а также Android рекомендует использовать MVVM в качестве архитектурного шаблона для проектов.

Пишите модульные тесты

Качество программного обеспечения очень важно, и в некоторых случаях незначительные ошибки могут привести к серьезным проблемам и последствиям. Когда у вас есть архитектура, одним из преимуществ является разделение задач. Каждую часть вашей архитектуры, в зависимости от того, какую из них вы решите использовать, можно протестировать отдельно. Наличие архитектуры ускоряет тестирование, и рекомендуется тестировать как можно больше кода. Я написал свой первый модульный тест для Android, когда только начал работать. Это был очень разочаровывающий опыт: писать код для функции, а затем тратить в два раза больше времени на написание модульных тестов. Постарайтесь потратить время на написание модульных тестов на раннем этапе, это наверняка окажется очень полезным в будущем.
Некоторые проекты не делают этого, но я должен упомянуть здесь и тестирование пользовательского интерфейса. Попробуйте также написать UI-тесты с помощью таких библиотек, как Espresso. Вы обязательно должны провести исследование и, по крайней мере, быть знакомым с темой. Это может помочь вам набрать бонусные баллы на собеседовании :)

Используйте анимацию

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

Надеюсь, вам понравился пост в блоге и вы нашли его полезным. Я начинаю проявлять активность в социальных сетях, поэтому давайте общаться и делиться информацией в Интернете. Если у вас есть идеи и вы хотели бы услышать о чем-то конкретном в части 3, не стесняйтесь, напишите мне сообщение в Instagram, Twitter, LinkedIn.

Первоначально опубликовано на https://davidbojkovski.hashnode.dev.