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

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

Ответ

Плюсы:
✅ Упрощают асинхронный код (заменяют колбэки и RxJava)
✅ Легковесные (тысячи корутин ≈ 1 поток)
✅ Structured Concurrency (автоматическая отмена дочерних корутин)
✅ Интеграция с Jetpack (ViewModel, Room, Retrofit)
✅ Suspend-функции делают код линейным и читаемым

Минусы:
⚠️ Сложность дебага (стэктрейсы могут быть запутанными)
⚠️ Нужно понимать Dispatchers (Main/IO/Default)
⚠️ Ошибки могут "проглатываться" без явной обработки
⚠️ Не всегда заменяют RxJava (например, для сложных потоков данных)

Пример:

viewModelScope.launch(Dispatchers.IO) {
    val data = repository.fetchData() // suspend-функция
    withContext(Dispatchers.Main) {
        updateUi(data) 
    }
}