DroDev | Мобильная разработка: мысли вслух
461 subscribers
104 photos
229 links
Обсуждаю и рассказываю как сделать жизнь разработчика в команде интересной, легкой и продуктивной.

По всем вопросам @dilix90
Download Telegram
В прошлую пятницу запускал интерактив по поиску "кода в ошибках ;)", прикрепляю все основные "косяки" того самого фрагмента.

В нашем сообществе Вконтакте (https://vk.com/dr_dev) участники накидали еще больше годных замечаний, за что им отдельное спасибо!

* использование input приведет к IndexOutOfBounds точнее, а не IllegalAccess
This media is not supported in your browser
VIEW IN TELEGRAM
Когда работаете в команде, будьте уверены, что ваш коллега готов к правкам, которые вы будете вносить... например не стоит молча переводить весь проект на корутины, если до этого использовали RX без предварительного согласования с причастными.
В проекте наткнулся на код, когда во #Fragment при создании напрямую (а не через #bundle) устанавливаются значения.

Не надо так...

#Android может неожиданно пересоздать ваш Фрагмент, в таком случае состояние программы потеряется. Если же вы использовали arguments самого фрагмента, то при повторном доступе к информации в Bundle - ваши данные будут тут как тут.
This media is not supported in your browser
VIEW IN TELEGRAM
Вот почему поддержка проекта не менее важна чем его запуск.
Есть  несколько причин, почему я не люблю и не использую onClick в xml  разметках #layout. Вот главные:

1) Неявный вызов метод из "верстки" тяжело воспринимать при чтении кода
2) При #CodeReview проследить логику становится очень сложно
3) #AndroidStudio не всегда корректно видит использования методов и кнопок

Используете ли вы определение onClick прямо в верстке?
Надеюсь все знают, что #View в #Android может принимать не 2 (видно\нет), а 3 значения:

View.VISIBLE
View.INVISIBLE
View.GONE

Правильно ли их используешь ты 🙃?
Пиши в комменты в каких случаях используешь View.INVISIBLE 👻, а когда View.GONE 🕶
Время от времени крупные компании проводят митапы, в том числе по  #Android разработке. Такие бывают у Avito (http://bit.ly/2ogUXS9), Касперского, Яндекса и т.д.

Так вот, недавно в Авито один такой прошел, самый сок можно найти на хабре, приятного просмотра! http://bit.ly/2AZk92g
This media is not supported in your browser
VIEW IN TELEGRAM
Всегда грамонтно рассчитывайте свои силы и не бойтесь сказать "Нет" если проект вам не по скилу.
В блог пишу статьи на интересные разработчику темы.

Хочешь задавать тон и читать про то, что интересно именно тебе?

Оставляй пожелания в комментах или в специальной теме для заявок в ВК 🗣
4 строчки кода и несколько косяков.
Какие #ошибки вы видите в данном сниппете?
#Аналитика в мобильных приложениях для разработчика - страшный сон архитектуры вашего проекта. Всё потому, что мы, как разработчики, уважаем #SOLID, инкапсуляцию и всё такое... А потом приходит аналитик, маркетолог и просят всякую дичь. Например поведение пользователя на экране в зависимости от предыдущего экрана. И вот прощай #инкапсуляция.

Статья на тему как встраиваю аналитику обычно я - в черновиках и в работе, а тем временем ребята из La moda рассказывают как это делают они: https://habr.com/ru/company/lamoda/blog/469761/.

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

#Firebase #analytics (http://bit.ly/2OQwQoe)
Бесплатно и сердито. Можно строить воронки по событиям, но нельзя использовать параметры событий в нем.  Атрибуция (понять от куда пришел пользователь) есть, но в Appsflyer проще. Можно выгружать "сырые" данные в #BigQuery. Это круто, удобно и все такое, но надо повозиться. Зато можно настроить любые графики, данные и все что можно себе представить.

#Appsflyer (https://lite.ms/mTmv5y)
Использовался в основном для атрибуций. Причем, говорят (не пробовал), есть атрибуция рекламы по ТВ. В интерфейсе воронки по событиям можно разделять на каналы. У ребят из моей команды были проблемы отправить в AppsFlyer события с сервера, чтобы следить за ЖЦ пользователя в разрезе клиент-серверного единого пространства.

#Amplitude (http://bit.ly/2IPq7Ha)
Воронки - чума, можно строить по событиям, учитывать параметры и порядок ивентов. Посмотреть обезличенную инфу по пользователям на каждом этапе воронки и узнать кто конкретно отвалился. Например недавно прибежал аналитик и "айайай, у нас после релиза почему то >50% после первого экрана онбординга отваливаются". Зашли в amplitude, выгрузили список отвалившихся пользователей. Из условных 50 пользователей за период 30 было из США с одной и той же моделью телефона и из одной подсети. Все бы ничего, но приложение в сторе не доступно оттуда :D Выдвинули гипотезу, что это авто (или не очень) тесты после раскатки и спокойно пошли работать дальше.


Мой выбор - при старте проекта, если там и так используется Firebase - добавить аналитику от него. С ним можно уже запускаться, хоть будет понятно что происходит. Дальше Amplitude для более продвинутых воронок. Appsflyer уже если собираетесь поливать усиленно траффиком.
This media is not supported in your browser
VIEW IN TELEGRAM
Рефакторинг и расплата с "техническим долгом" должны быть аккуратными, так, чтобы не наломать еще больше дров.