#ArchitectureComponents #BestPractices
Распространенные ошибки при использовании Android Architecture Components
Повторение - мать учения. Поэтому рекомендую освежить или наоборот ознакомиться с рекомендациями по использованию Architecture Components:
1️⃣ Утечка
2️⃣ Повторная загрузка данных после смены конфигурации
3️⃣ Утечка ViewModel
4️⃣ Позволять
5️⃣ Создание зависимостей ViewModel после каждого изменения конфигурации
6️⃣ Хранение ссылки на
Распространенные ошибки при использовании Android Architecture Components
Повторение - мать учения. Поэтому рекомендую освежить или наоборот ознакомиться с рекомендациями по использованию Architecture Components:
1️⃣ Утечка
LiveData
Observer в Fragment
2️⃣ Повторная загрузка данных после смены конфигурации
3️⃣ Утечка ViewModel
4️⃣ Позволять
View
изменять LiveData
5️⃣ Создание зависимостей ViewModel после каждого изменения конфигурации
6️⃣ Хранение ссылки на
View
в ViewModelХабр
5 распространенных ошибок при использовании архитектурных компонентов Android
Даже если вы не делаете этих ошибок, стоит о них помнить, чтобы не столкнуться с некоторыми проблемами в будущем. 1. Утечка наблюдателей LiveData во фрагментах...
#BestPractices
The technical choices I make to build great Android apps
Важным началом разработки любого приложения это есть принятия подходов, которые будут использоваться при создание вашего единорога! Разработчики приложения "A-Z" делятся своим опытом:
1️⃣ UI
2️⃣ Качество кода
3️⃣ Архитектура приложения
The technical choices I make to build great Android apps
Важным началом разработки любого приложения это есть принятия подходов, которые будут использоваться при создание вашего единорога! Разработчики приложения "A-Z" делятся своим опытом:
1️⃣ UI
2️⃣ Качество кода
3️⃣ Архитектура приложения
#Exception #BestPractices
Handling Exceptions: The Easy Way
Ошибки естественным образом возникают в программах. Их причинами могут быть как неправильный код так и внешние факторы. Поэтому разработчики всегда должны писать код с учетом этих факторов.
Как понять какие ошибки стоит обрабатывать, выбрасывать, игнорировать, а возможно вообще не задумываться о их обработке? Нормальная ли практика игнорировать все ошибки, чтобы приложение не падало у пользователя?
Handling Exceptions: The Easy Way
Ошибки естественным образом возникают в программах. Их причинами могут быть как неправильный код так и внешние факторы. Поэтому разработчики всегда должны писать код с учетом этих факторов.
Как понять какие ошибки стоит обрабатывать, выбрасывать, игнорировать, а возможно вообще не задумываться о их обработке? Нормальная ли практика игнорировать все ошибки, чтобы приложение не падало у пользователя?
Medium
Handling Exceptions. The Easy Way.
A simple framework for dealing with in languages like Java, Kotlin & similar.
#Exception #BestPractices
Рекомендуемая стратегия для обработки ошибок:
1️⃣ Избегайте возникновения ошибки, например проверяйте данные перед передачей в метод или проверяйте текущие состояние перед получением данных (например получение
2️⃣ Если вы знаете как обработать возникшую проблему - делайте это: отправьте запрос повторно, вызывайте другой метод и пр.
3️⃣ Пробрасывайте исключение дальше, добавляя больше информации о его причине. Более высокий слой вполне может быть способен обработать ошибку
4️⃣ Crash приложения. Возможно кто-то считает что это плохо, но он позволяет мгновенно отловить ошибку на стадии тестирования, либо легко отследить ее в проде. Если ошибка просто игнорируются и приложение не падает, то понять причину последующей некорректной работы может быть намного труднее чем увидеть stack trace и разобраться в нем.
Не забудьте настроить Firebase Crashlytics или другой сервис по отслеживанию крэшей!
Уведомляйте пользователя об ошибках, которые не дают приложению нормально работать. Пользователь должен понимать, что есть причина некорректной работы.
Также будет хорошо показать путь которым эту ошибку можно исправить, например предоставив соответствующее разрешение или доступ.
Рекомендуемая стратегия для обработки ошибок:
1️⃣ Избегайте возникновения ошибки, например проверяйте данные перед передачей в метод или проверяйте текущие состояние перед получением данных (например получение
Activity
/Context
в Fragment
)2️⃣ Если вы знаете как обработать возникшую проблему - делайте это: отправьте запрос повторно, вызывайте другой метод и пр.
3️⃣ Пробрасывайте исключение дальше, добавляя больше информации о его причине. Более высокий слой вполне может быть способен обработать ошибку
4️⃣ Crash приложения. Возможно кто-то считает что это плохо, но он позволяет мгновенно отловить ошибку на стадии тестирования, либо легко отследить ее в проде. Если ошибка просто игнорируются и приложение не падает, то понять причину последующей некорректной работы может быть намного труднее чем увидеть stack trace и разобраться в нем.
Не забудьте настроить Firebase Crashlytics или другой сервис по отслеживанию крэшей!
Уведомляйте пользователя об ошибках, которые не дают приложению нормально работать. Пользователь должен понимать, что есть причина некорректной работы.
Также будет хорошо показать путь которым эту ошибку можно исправить, например предоставив соответствующее разрешение или доступ.
Firebase
Firebase Crashlytics
Get clear, actionable insight into app issues with this powerful crash reporting solution for Apple, Android, Flutter, and Unity.
#Kotlin #Dagger #BestPractices #DependencyInjection
Dagger in Kotlin: Gotchas and Optimizations
Dagger на сегодня является самым популярным DI для Android. Почему так? Он богат возможностями, не использует рефлексию и проверят ваш граф во время компиляции.
Для всех любителей Kotlin использование Dagger порой является неудобным и трудным в силу того, что эта библиотека изначально разрабатывалась для Java и до сих пор на официальном сайте нет полноценного руководства как ее лучше использовать с Kotlin.
Команда Android решила исправит это и дать ряд рекомендаций:
👉 Всегда используйте последнюю версию Dagger (сейчас это 2.24)
👉 Включите инкрементальную компиляцию Dagger в kapt
👉 При выполнение inject зависимости в непубличное свойство класса, задавайте квалификатор на поле
👉 Dagger работает эффективнее если зависимости в
👉 Работа с generic в Kotlin и Java отличается, поэтому при inject зависимостей с generic вам будет полезна аннотация @JvmSuppressWildcards
👉 Будьте осторожны с использованием single line function, так как Dagger при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
Dagger in Kotlin: Gotchas and Optimizations
Dagger на сегодня является самым популярным DI для Android. Почему так? Он богат возможностями, не использует рефлексию и проверят ваш граф во время компиляции.
Для всех любителей Kotlin использование Dagger порой является неудобным и трудным в силу того, что эта библиотека изначально разрабатывалась для Java и до сих пор на официальном сайте нет полноценного руководства как ее лучше использовать с Kotlin.
Команда Android решила исправит это и дать ряд рекомендаций:
👉 Всегда используйте последнюю версию Dagger (сейчас это 2.24)
👉 Включите инкрементальную компиляцию Dagger в kapt
👉 При выполнение inject зависимости в непубличное свойство класса, задавайте квалификатор на поле
👉 Dagger работает эффективнее если зависимости в
@Module
предоставляются через статические методы. Используйте object
для объявления @Module
и добавляйте аннотацию @JvmStatic
к каждому методу @Provides
.👉 Работа с generic в Kotlin и Java отличается, поэтому при inject зависимостей с generic вам будет полезна аннотация @JvmSuppressWildcards
👉 Будьте осторожны с использованием single line function, так как Dagger при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
Medium
Dagger in Kotlin: Gotchas and Optimizations
Use Dagger in Kotlin! This article includes best practices to optimize your build time and gotchas you might encounter.
#Style #DarkTheme #Material #BestPractices
Темы и стили в Android-приложениях
Возможности кастомизации View на основе ресурсов style и атрибутов довольно обширны. В статье вы найдете подробный разбор:
👉 Отличия между темой, стилей, ThemeOverlay
👉 Что такое атрибут
👉 Как работает механизм кастомизации View на основе стилей
👉 Реализация Material Design 2.0 (Material Components)
👉 Как правильно работать со стилями, чтобы поддержать темную тему
👉 Советы по работе со стилями
Темы и стили в Android-приложениях
Возможности кастомизации View на основе ресурсов style и атрибутов довольно обширны. В статье вы найдете подробный разбор:
👉 Отличия между темой, стилей, ThemeOverlay
👉 Что такое атрибут
👉 Как работает механизм кастомизации View на основе стилей
👉 Реализация Material Design 2.0 (Material Components)
👉 Как правильно работать со стилями, чтобы поддержать темную тему
👉 Советы по работе со стилями
Хабр
Темы и стили в Android-приложениях
Каждому Android-разработчику так или иначе приходилось работать со стилями. Кто-то чувствует себя с ними уверенно, у кого-то есть только поверхностные знания, к...
#ArchitectureComponents #ViewModel #BestPractices
When to load data in ViewModels
Советы по загрузке данных в ViewModel:
⛔Вызывать метод для загрузки данных
⛔Запускать загрузку при создании
✅Запускать загрузку данных отложено (lazy)
✅Загружать данные в
✅Передавайте все необходимые данные в
When to load data in ViewModels
Советы по загрузке данных в ViewModel:
⛔Вызывать метод для загрузки данных
⛔Запускать загрузку при создании
ViewModel
✅Запускать загрузку данных отложено (lazy)
✅Загружать данные в
LiveData
, когда происходит вызов onActive()
✅Передавайте все необходимые данные в
ViewModel
через конструктор, а не функции или свойстваMedium
When to load data in ViewModels
Recently I had a surprisingly long discussion on an ostensibly easy question. Where in our code should we actually trigger the loading of…
#BestPractices
10 Tips for Android Library Developers
Вы разрабатываете Android библиотеку? Думаете начать? Если да - то вам могут полезны советы, приведенные в статье, которые упростят работу конечным пользователям вашего творения.
10 Tips for Android Library Developers
Вы разрабатываете Android библиотеку? Думаете начать? Если да - то вам могут полезны советы, приведенные в статье, которые упростят работу конечным пользователям вашего творения.
Medium
10 Tips for Android Library Developers
If you’re distributing a library or just maintaining some library modules in your project, here’re some tips that may be useful to you.
#Architecture #BestPractices
The “Real” Repository Pattern in Android
Repository - это довольно популярный шаблон проектирования, позволяющий инкапсулировать получение/хранение данных из различных источников: сервер, БД, хранилища на устройстве и пр.
Шаблон проектирования - это рекомендация и общее описание компонентов и их отношений между ними, поэтому зачастую разработчики делают реализацию по разному и не всегда хорошо.
Наиболее популярные ошибки, которые допускают пользователи:
👉
👉 Различные несвязанные между собой DataSource используются одни и те же DTO
👉 Repository реализуется по на основе endpoint-ов, а не на основе модели
👉 Repository кэширует всю модель, даже те поля, которые всегда должны быть свежими
👉 DataSource используется более чем одним Repository
В статье разбираются эти лучшие практики по реализации и почему им стоит следовать
The “Real” Repository Pattern in Android
Repository - это довольно популярный шаблон проектирования, позволяющий инкапсулировать получение/хранение данных из различных источников: сервер, БД, хранилища на устройстве и пр.
Шаблон проектирования - это рекомендация и общее описание компонентов и их отношений между ними, поэтому зачастую разработчики делают реализацию по разному и не всегда хорошо.
Наиболее популярные ошибки, которые допускают пользователи:
👉
Repository
возвращает DTO (модели источников данных, которые используются источниками данных в нем) а не модели Domain слоя👉 Различные несвязанные между собой DataSource используются одни и те же DTO
👉 Repository реализуется по на основе endpoint-ов, а не на основе модели
👉 Repository кэширует всю модель, даже те поля, которые всегда должны быть свежими
👉 DataSource используется более чем одним Repository
В статье разбираются эти лучшие практики по реализации и почему им стоит следовать
Medium
The “Real” Repository Pattern in Android
Over the years I’ve seen many implementations of the repository pattern, yet I think most of them are wrong and not beneficial.
#Crashlytics #Firebase #BestPractices
How to set up Crashlytics alerting to monitor app stability
Firebase Crashlytics - это стандарт де-факто для трекинга крешей в ваших приложениях. В статье создатели сервиса рассказывают про возможности настройки уведомлений о крешах, регрессий стабильности и интеграции уведомлений с разными каналами: Slack, Jira и др.
How to set up Crashlytics alerting to monitor app stability
Firebase Crashlytics - это стандарт де-факто для трекинга крешей в ваших приложениях. В статье создатели сервиса рассказывают про возможности настройки уведомлений о крешах, регрессий стабильности и интеграции уведомлений с разными каналами: Slack, Jira и др.
The Firebase Blog
How to set up Crashlytics alerting to monitor app stability
Keeping an eye out for issues that affect your app’s stability is crucial, but we also know that you can’t spend your entire day staring at the Firebase Crashlytics console.
From the beginning, Crashlytics has given developers the ability to turn on stability…
From the beginning, Crashlytics has given developers the ability to turn on stability…
#Kotlin #BestPractices
Дмитрий Жемеров — Идиоматичный Kotlin от форматирования до DSL
Насколько полностью вы используете возможности Kotlin? Насколько правильно вы это делаете? Может есть путь, который рекомендуют создатели? Да, он есть в первую очередь это Kotlin Coding Conventions и доклад от Дмитрия Жемерова.
Дмитрий Жемеров - это старожила JetBrains. Он участвовал в разработке многих проектов компании, включая Kotlin. Заглавное фото с маяком - его работа. Соавтор книги «Kotlin in Action».
Дмитрий Жемеров — Идиоматичный Kotlin от форматирования до DSL
Насколько полностью вы используете возможности Kotlin? Насколько правильно вы это делаете? Может есть путь, который рекомендуют создатели? Да, он есть в первую очередь это Kotlin Coding Conventions и доклад от Дмитрия Жемерова.
Дмитрий Жемеров - это старожила JetBrains. Он участвовал в разработке многих проектов компании, включая Kotlin. Заглавное фото с маяком - его работа. Соавтор книги «Kotlin in Action».
YouTube
Дмитрий Жемеров — Идиоматичный Kotlin от форматирования до DSL
Ближайшая конференция — JPoint 2025, 3–4 апреля (Москва + трансляция).
Подробности и билеты: https://jrg.su/T2zfbS
— —
. . . . Начать пользоваться Kotlin несложно — он похож на Java, и ваш существующий опыт легко позволит вам начать программировать в стиле…
Подробности и билеты: https://jrg.su/T2zfbS
— —
. . . . Начать пользоваться Kotlin несложно — он похож на Java, и ваш существующий опыт легко позволит вам начать программировать в стиле…
#Kotlin #BestPractices
Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.
Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.
Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
Medium
Effective Kotlin printed version
Lately, the most common question people ask me is not “How are you doing?” but instead, “When Effective Kotlin will be available in…
#Architecture #BestPractices
How to start writing reusable components for Android apps?
Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.
Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
How to start writing reusable components for Android apps?
Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.
Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные
View
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
Medium
How to start writing reusable components for Android apps?
A journey researching custom views on Android platform
#BestPractices
The Seven (Actually 10) Cardinal Sins of Android Development
Мы все крутые программисты, но даже мы можем допустить ошибки. Спешим быстрее закончить, чтобы переключиться на новую задачу. Может сроки жмут и надо быстрее сдать или уже накрыт стол и какое тут до задач. Довольно часто причиной служит незнание каких-то аспектов.
В статье разбираются ошибки, которые не стоит допускать в вашем коде. С чем-то из этого вы будете знакомы, а с чем-то нет:
👉 Статические ссылки на Android компоненты с жизненным циклом (
👉 Неправильно получение ссылки на
👉 Хранение
👉 Аргументы в конструкторе
👉 Задание переменных
👉 Не сохранять состояние через в
👉 Загружать данные только при
👉 Инициализация
👉 Переопределение
👉 Не final static переменные
The Seven (Actually 10) Cardinal Sins of Android Development
Мы все крутые программисты, но даже мы можем допустить ошибки. Спешим быстрее закончить, чтобы переключиться на новую задачу. Может сроки жмут и надо быстрее сдать или уже накрыт стол и какое тут до задач. Довольно часто причиной служит незнание каких-то аспектов.
В статье разбираются ошибки, которые не стоит допускать в вашем коде. С чем-то из этого вы будете знакомы, а с чем-то нет:
👉 Статические ссылки на Android компоненты с жизненным циклом (
Activity
/Fragment
/View
и др.)👉 Неправильно получение ссылки на
Fragment
👉 Хранение
Fragment
в FragmentPagerAdapter
(ViewPager
)👉 Аргументы в конструкторе
Fragment
👉 Задание переменных
Fragment
с использованием set функций при создании👉 Не сохранять состояние через в
Bundle
при использование ViewModel
👉 Загружать данные только при
savedInstanceState == null
👉 Инициализация
Fragment
в некорректном состоянии👉 Переопределение
onResume()
/onPause()
для всего подряд👉 Не final static переменные
Medium
The Seven (Actually 10) Cardinal Sins of Android Development
Merry Christmas to everyone! In this article, I intend to show you a few commonly recurring mistakes that some developers make by accident…
#Testing #BestPractices
Unit Testing Best Practices
Наши приложения нуждаются в тестах. Необходимо автоматизировать проверки того что мы пишем, чтобы повышать качество программ и обеспечить защиту от неосторожного рефакторинга.
В статье рассматриваются чему способствует практика написания тестов, а также лучшие практики в Unit тестировании.
Unit Testing Best Practices
Наши приложения нуждаются в тестах. Необходимо автоматизировать проверки того что мы пишем, чтобы повышать качество программ и обеспечить защиту от неосторожного рефакторинга.
В статье рассматриваются чему способствует практика написания тестов, а также лучшие практики в Unit тестировании.
Medium
Unit Testing Best Practices
A list of practical suggestions that can help you write better tests
#BestPractices #CodeQuality
10 правил NASA для написания критически важного кода
У разработчиков в NASA непростое ПО, оно реально отправляет в космос! И поэтому к нему предъявляются наивысшие требования по качеству и безопасности. Подробнее об этих правилах в статье:
10 правил NASA для написания критически важного кода
У разработчиков в NASA непростое ПО, оно реально отправляет в космос! И поэтому к нему предъявляются наивысшие требования по качеству и безопасности. Подробнее об этих правилах в статье:
AppTractor
10 правил NASA для написания критически важного кода
У разработчиков NASA одна из самых сложных работ в мире программирования. Они пишут код и разрабатывают критически важные приложения, в первую очередь заботясь о безопасности и надежности.
#BestPractices
40 советов, которые навсегда изменят ваше программирование
Статья, которая содержит 40 достаточно полезных рекомендаций для разработчика, будет полезна как новичкам, так и опытным программистам. Заголовок немного кликбейтный, потому что каждому разработчику присущ свой стиль написания кода, но советы действительно помогут пересмотреть свои взгляды на определённые вещи в разработке.
40 советов, которые навсегда изменят ваше программирование
Статья, которая содержит 40 достаточно полезных рекомендаций для разработчика, будет полезна как новичкам, так и опытным программистам. Заголовок немного кликбейтный, потому что каждому разработчику присущ свой стиль написания кода, но советы действительно помогут пересмотреть свои взгляды на определённые вещи в разработке.
AppTractor
40 советов, которые навсегда изменят ваше программирование
В этой статье я даю некоторые советы, которые помогли мне в моей карьере. Прочитать это все можно быстро, но их внедрение и использование может занять всю жизнь.
#BestPractices #Kotlin
Android library development - Modularization
Для всех разработчиков библиотек рекомендую изучить статья, чтобы лучше делать модуляризацию своих библиотек и они получались более легкими. Также в статье рассматривается правильное использование модификаторов видимости.
Android library development - Modularization
Для всех разработчиков библиотек рекомендую изучить статья, чтобы лучше делать модуляризацию своих библиотек и они получались более легкими. Также в статье рассматривается правильное использование модификаторов видимости.
#bestpractices
Лучшие практики Android разработки на 2022 год
Не согласен с рекомендацией Hilt, Timber, Coil (добавил бы Glide) и ничего не сказали про Gradle KTS. Пишите в @android_broadcast_talks чтобы вы еще добавили/убрали
Лучшие практики Android разработки на 2022 год
Не согласен с рекомендацией Hilt, Timber, Coil (добавил бы Glide) и ничего не сказали про Gradle KTS. Пишите в @android_broadcast_talks чтобы вы еще добавили/убрали
👎26👍14