🔎 Google оновив рекомендації по архітектурі в Android
В документації зʼявилася нова стаття з описом рекомендацій відносно побудови архітектури в Android застосунку.
Вони поділені на декілька частин і містять наступні рекомендації:
1. Layered Architecture
— data шар
— ui шар
— data шар новинен віддавати дані через Repository
— використовуйте Kotlin Coroutines & Flows
— domain шар тільки у великих застосунках
2. UI Layer
— дотримуйтесь Unidirectional Data Flow (UDF)
— використовуйте ViewModel
— слухайте State через repeatOnLifecycle
— не відравляйте евенти напряму з ViewModel на UI
— single activity
— Jetpack Compose
3. ViewModel
— ViewModel не повинна нічого знати про Context, Activity чи Resources
— комунікація з UI через Kotlin Flows
— використовуєм Kotlin Coroutines для роботи з domain та data шарами
— не використовуйте ViewModel для екранів, які часто перевикористовуються
— не використовуйте AndroidViewModel
— рекомендують використовувати Single State в комунікації між ViewModel та UI
4. Lifecycle
— ❗ не перевизначайте методи Activity/Fragment по типу onResume, onPause, onStart. Замість них використовуйте LifecycleObserver.
5. Dependencies
— впроваджуйте dependency injection (рекомендується старатися робити constructor injection)
— використовуйте скоупи для ефективного перевикористання
— гугл рекомендує Hilt
6. Testing
— ви повинні писати юніт тести для як мінімум data шару та ViewModels (я би ше добавив domain шар обовʼязковим)
— старайтесь використовувати Фейки замість Моків
— тестуйте StateFlow
7. Models
— в складних апках використовуйте різні моделі для кожного шару. Мається на увазі DTO для data шару, domain моделі, та UIState моделі.
8. Naming conventions
— добавляйте дієслово у назвах методів — makePayment()
— проперті мають бути іменником — inProgressTopicSelection
— потоки даних, по типу Flow мають мати префікс get — getAuthorStream(): Flow<Author>
— в ідеалі, назви імплементацій інтерфейсів мають пояснювати їх суть (типу OfflineFirstNewsRepository або InMemoryNewsRepository). Якщо такого імені немає, то добавляти префікс Default — DefaultNewsRepository
В цілому, рекомендації є достатньо зрозумілими і очевидними, але ще не було єдиного місця в документації де би Google їх всіх зібрав. Тому, інформація корисна.
🔗 Більше — в Телеграм каналі IT & Android

6 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів