Вступить в клуб →
лёгкаявопросСлой данных, DI и релиз

ViewModel сама создаёт клиент сети

Во ViewModel заказов написано так:

class OrdersViewModel : ViewModel() {
    private val api = Retrofit.Builder()
        .baseUrl(BASE_URL)
        .build()
        .create(OrdersApi::class.java)

    fun load() { /* ... */ }
}

Чем это плохо?

  • Единственная проблема — лишний трафик из-за повторных соединений, на тестируемость класса это никак не влияет
  • Такой код не скомпилируется: зависимости внутри ViewModel обязаны быть помечены аннотацией внедрения
  • Проблем нет: так меньше кода, не нужен контейнер зависимостей, а клиент всё равно создаётся один на процесс
  • Класс жёстко связан с реализацией сети: фейк в тесте не подставить, а каждый экран поднимает свой клиент

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела