Какая архитектура лучше для разработки на Jetpack Compose

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

Ответ

MVVM (Model-View-ViewModel) — оптимальный выбор для Jetpack Compose. Compose работает как View, а ViewModel управляет состоянием и логикой.

Плюсы:

  • Четкое разделение UI и логики.
  • Состояние легко тестируется.
  • Интеграция с Jetpack (LiveData/Flow, State).

Пример:

@Composable
fun CounterScreen(viewModel: CounterViewModel = viewModel()) {  
    val count by viewModel.count.collectAsState()  
    Button(onClick = { viewModel.increment() }) {  
        Text("Count: $count")  
    }  
}  

class CounterViewModel : ViewModel() {  
    private val _count = MutableStateFlow(0)  
    val count: StateFlow<Int> = _count.asStateFlow()  

    fun increment() { _count.value++ }  
}  

Альтернативы:

  • MVI — хорош для сложных состояний, но избыточен для простых экранов.
  • Clean Architecture — подходит для больших проектов, но требует больше boilerplate.

Для большинства случаев MVVM + Compose — золотая середина.