Какую архитектуру выберешь для написания проекта с нуля

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

Ответ

Для нового проекта я бы выбрал MVVM (Model-View-ViewModel) + Clean Architecture.

Почему:

  • MVVM обеспечивает разделение логики и UI, что упрощает тестирование и поддержку.
  • Clean Architecture (слои: Data, Domain, Presentation) делает код более модульным и независимым от фреймворков.

Пример (Kotlin + Jetpack):

// ViewModel
class UserViewModel(repo: UserRepository) : ViewModel() {  
    val users = repo.getUsers().asLiveData()  
}  

// Repository (Domain/Data слои)  
class UserRepository(private val dataSource: UserDataSource) {  
    fun getUsers() = dataSource.fetchUsers()  
}  

Дополнительно:

  • Coroutines/Flow для асинхронности.
  • Dagger/Hilt для DI.
  • Если проект сложный – можно добавить MVI для управления состоянием.

Такой подход обеспечит гибкость, тестируемость и масштабируемость.