Использовал ли чистую архитектуру в проекте

«Использовал ли чистую архитектуру в проекте» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, использовал Clean Architecture (CA) в нескольких проектах. Основные принципы:

  • Слои: Domain (бизнес-логика), Data (репозитории, источники данных), Presentation (UI).
  • Зависимости: Внутрь (Domain не знает о Data/Presentation).

Пример структуры модуля:

// Domain
interface UserRepository {  // Abstraction
    suspend fun getUser(): User
}

// Data
class UserRepositoryImpl @Inject constructor(
    private val api: UserApi
) : UserRepository {  // Implementation
    override suspend fun getUser() = api.fetchUser()
}

// Presentation
class UserViewModel @Inject constructor(
    private val userRepo: UserRepository  // Depends on abstraction
) : ViewModel() {
    //...
}

Плюсы:

  • Тестируемость (легко мокировать репозитории).
  • Гибкость (замена API/DB без изменений в Domain).

Минусы:

  • Больше boilerplate-кода.
  • Сложность для маленьких проектов.

Использую с Dagger/Hilt для DI и Coroutines/Flow для асинхронности.