Какие плюсы и минусы Clean Architecture

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

Ответ

Плюсы:
✅ Четкое разделение слоев (Presentation, Domain, Data)
✅ Независимость от фреймворков и внешних библиотек
✅ Легче тестировать (юнит-тесты для Domain слоя)
✅ Упрощает поддержку и масштабирование
✅ Переиспользуемость кода

Минусы:
❌ Большой объем boilerplate-кода
❌ Сложность для маленьких проектов (overkill)
❌ Долгий старт из-за необходимости продумывать архитектуру
❌ Кривая обучения для новичков

Пример слоев:

// Domain layer (не зависит от Android)
interface UserRepository {
    suspend fun getUser(): User
}

// Data layer (реализация для Domain)
class UserRepositoryImpl @Inject constructor(
    private val api: UserApi
) : UserRepository {
    override suspend fun getUser() = api.getUser()
}