На первых этапах обучения разработке приложений для Android новички сталкиваются с множеством сложностей. Они элементарно решаются профессионалом, но часто представляют сложную задачу для новичка.  Также часто бывает, что новички по незнанию формируют у себя неправильный подход к написанию программного кода и, сами того не подозревая, усложняют себе работу в будущем. Дополнительная трудность заключается в том, что даже самые простые приложения для Android — это сложные программы, включающие сотни файлов и строк кода. Запустить их с первого раза без ошибок достаточно непросто. Владимир Анисимов — практикующий Android-разработчик с более чем 4-летним опытом в нативной и мультиплатформенной разработке — разобрал 5 типичных ошибок новичков из своего опыта и дал лайфхаки, которые помогут их решить. Применяя их, начинающий разработчик сможет значительно облегчить себе обучение на первых порах и в конечном результате стать специалистом высокого класса с достойной оплатой труда. Представьте, что вы заходите в код своего проекта и видите примерно такую картинку: Весь код выделен красным, при этом приложение не запускается.  Первая мысль: сразу проверять код, искать ошибку и пытаться исправить ее вручную. Однако такой подход на начальных этапах и без опыта в разработке может привести к новым ошибкам. Вместо этого лучше сделать следующее: Набор текста на скриншоте ниже называется лог. В нем уже есть информация об ошибке, нужно только ее найти. Ключевое слово здесь — Exception (но может быть и Error), описание ошибки находится рядом с ним. Его нужно скопировать и вставить в поисковик Google. Ошибки, которые встречаются чаще всего, уже разобраны на форумах и сайтах для разработчиков. Вы с большой вероятностью сможете найти решение своей проблемы. Также ваша среда разработки может подсказать конкретное место в программе, где произошла ошибка. Это выделенные синим ссылки: Видя место в коде с ошибкой и зная описание, гораздо легче ее исправить. Если эта ошибка создана вами как разработчиком (например, опечатка в коде), исправлять ее нужно исключительно вручную. Если ошибка — внутри системы (например, не установлена нужная библиотека с данными), тогда ее нужно устранять в соответствии с рекомендациями в логе. Попробуйте их нажать, если нужно устранить ошибку, но вы не понимаете, что делать: Rebuild Project Она находится во вкладке Build: Эта кнопка позволяет пересобрать проект, устранив ошибки. Sync project with gradle files Эта кнопка находится во вкладке File: Логично, что, если нет связи между файлами проекта и gradle файлами (теми, которые собирают части проекта в единую систему) — приложение не будет работать. Кнопка Sync project with gradle files решает данную проблему. Clean project  Эта кнопка очищает проект от временных файлов сборки. Это полезно, когда вы меняете что-то в коде, но не видите изменений при перезапуске проекта. Если после нажатия этой кнопки ошибка не устранена, можно вернуться к предыдущим двум и снова нажать их. Кнопка Clean project находится на вкладке Build: Invalidate caches Эта кнопка — самое радикальное средство в борьбе с ошибками. Ее стоит нажимать, когда проект не запускается, Clean Project не работает и суть ошибки вы тоже не понимаете. Invalidate caches очищает временные файлы уже самой Android Studio. Она находится во вкладке File: Следует оговориться, что эти советы направлены на новичков, более опытные разработчики знают, что и когда лучше использовать. Эта ошибка встречается, наверное, у 80% начинающих разработчиков. Она не критична, однако делает код сложным и нечитаемым. Вот, как это выглядит на примере: В чем сложность с такими именами переменных? Еще со школы мы привыкли переменные называть буквами a, b, c. Однако в программировании так делать нежелательно, так как через время трудно будет разобраться, какая буква что значит. Это ключевой момент: код должен быть понятен не только компьютеру, но и человеку. Если вы назовете переменные подобным образом, возможно, в момент разработки вы будете помнить, что они значат. Однако, вернувшись к этому коду через месяц, вы можете забыть, что имели в виду. Особенно, если код сложный и состоит из десятков и сотен строк. Нужно будет находить, где переменные a, b, c были введены, и восстанавливать логику у себя в голове. А если ваш код будет читать другой человек, у него уйдет еще больше времени на то, чтобы его понять  Иногда разработчик пытается спасти такую ситуацию с помощью комментариев к переменным: Однако, к комментариям все равно придется возвращаться. К тому же, они утяжеляют код, ведь теперь придется читать сам код и комментарии к нему. Называть переменные нужно сразу так, чтобы они сами себя объясняли: В этом случае название переменной — money — сразу приблизительно дает понимание, о чем речь. А в идеале нужно уточнить, что за money, например назвав переменную так: moneyOnBalance. Возьмем пример посложнее: Это код для расчета баланса на счету при покупке товара стоимостью p и со скидкой d. Bal — количество средств на балансе. В данном случае переменным заданы буквенные имена — p, d. Имя bal выглядит более понятно и читаемо, но все равно не является идеальным. Попробуйте вникнуть в суть формулы. Попробовали? Сколько раз вы бегали глазами от буквы в формуле к пояснению, что она значит? А вот так следовало бы оформить этот код: Теперь код можно читать почти как книгу и не нужно тратить время и усилия на определение того, что значит та или иная буква. Начинающие разработчики часто стараются прописать все в коде по максимуму, задать переменные, без которых можно обойтись. Это лишние элементы, которые только усложняют код. Например, разработчик задает 4 отдельные переменные и затем использует их в коде: Создание отдельных переменных может быть обосновано — в том случае, если эти переменные будут использоваться в коде дальше много раз. Тогда данный подход действительно упростит код и сэкономит время разработчику. Но в конкретном фрагменте каждая переменная используется в коде только один раз. Также в коде сделана ошибка с названиями переменных (см. ошибку #2). О чем вам говорит message1? Что такое 1? И чем отличается от message2? Как можно упростить этот код и убрать все ошибки: Сразу задать значения, которые должны выдаваться при определенных условиях без введения переменных. Код сразу стал на 4 строчки короче, его легче читать и воспринимать. Когда вы изучаете программирование по книгам, видео-курсам или даже вместе с преподавателем и уже знаете определенные функции, на их отработку вам могут дать абстрактное задание, которое с большой вероятностью не пригодится для работы. Например: вычислить факториал числа, решить квадратное уравнение, перепробовать все варианты сортировки данных. Эти задания хорошо развивают алгоритмичное мышление и могут быть полезны на начальных этапах, но увлекаться ими не стоит. Они приведут вас к тому, что вы хорошо будете мыслить алгоритмами, но при этом сможете писать только простые и «математизированные» программы. Лучше как можно раньше начать выполнять задания, связанные с реальной жизнью и работой программиста: например, разработать вычислитель для светофора или программу для обработки покупок. Если разработанная вами программа запускается, однако выдает не те значения, которые вам нужны (и которые правильны), не спешите искать ошибку вручную. Для этого есть режим Debug. Чтобы запустить программу в нем, нужно вместо обычной кнопки запуска нажать кнопку в форме жука, которая находится рядом с ней: В этом режиме вы сможете увидеть, что происходит при запуске программы в режиме реального времени. В этом режиме можно остановить работу программы в любом месте, при этом на экран выводится текущее значение переменных на данный момент: Если видно, что переменные имеют неверные значения, проверяем код в конкретной строке, экспериментируем с введенными элементами, пока не получим нужное значение переменной. Эта функция позволяет не проверять весь код (как часто делают новички) и не придумывать «костыли», а проверить конкретно те места, в которых вы подозреваете наличие ошибки.  Что это за ошибка и что с ней делать — нужно будет определить самостоятельно (в отличие от критической ошибки, из-за которой приложение не запускается), однако благодаря режиму Debug у вас будет понимание, в какой момент работы приложения и в какой части кода она появляется и как это исправить. Полезные ссылки: Контакт Владимира Анисимова в Telegram для вопросов по мобильной разработке: https://t.me/wovilon Профиль Владимира в LinkedIn для связи: https://www.linkedin.com/in/владимир-анисимов-849017135/ Профиль Владимира в Facebook для связи и вопросов по мобильной разработке: https://www.facebook.com/profile.php?id=100018492451691