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

Ответ

Использовал MVVM (с LiveData/Flow), Clean Architecture (с слоями domain/data/presentation) и MVI (для сложных экранов).

MVVM пример:

class MyViewModel(repo: MyRepo) : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> = _data

    fun loadData() {
        viewModelScope.launch {
            _data.value = repo.fetchData()
        }
    }
}

Плюсы:

  • MVVM: простота, разделение логики/UI
  • Clean: тестируемость, масштабируемость
  • MVI: предсказуемость состояния

Для новых проектов предпочитаю Clean + MVVM, для legacy - постепенный рефакторинг.

Ответ 18+ 🔞

А, ну вот, опять про архитектуру! Слушай, я тут как-то на проекте намучился с этим всем, пока не понял одну простую вещь. Ёпта, это как с машиной: можно ездить на разваливающейся дедовой «копейке», где проводки скручены изолентой, а можно на новой тачке, где всё по мануалу. Так и тут.

Вот смотри, я в последнее время юзаю MVVM (с LiveData или Flow, смотря по настроению), Clean Architecture (это когда domain/data/presentation отдельно, как в нормальной квартире: кухня, спальня, туалет — не смешивать!) и для особо мозговыносящих экранов — MVI, чтобы состояние не разъезжалось хуй пойми куда.

Вот тебе пример MVVM, простой как три копейки:

class MyViewModel(repo: MyRepo) : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> = _data

    fun loadData() {
        viewModelScope.launch {
            _data.value = repo.fetchData()
        }
    }
}

Видишь? Всё чётко. Логика во ViewModel, UI тупо слушает. Никакого говна в активити. Доверия ебать ноль к этим старым монолитам, где всё в одном файле на тысячу строк.

Так, а теперь про плюсы, чтобы ты понимал, зачем этот цирк:

  • MVVM: Простота, блядь. Разделил логику и UI — и живи спокойно. Голова не болит, где что искать.
  • Clean Architecture: Тестируемость и масштабируемость на уровне бога. Каждый слой сам за себя отвечает, как швейцарские часы. Хочешь поменять источник данных? Да похуй, идёшь в data слой и меняешь, не трогая всю остальную банду.
  • MVI: Ну это для перфекционистов. Состояние экрана предсказуемое, как восход солнца. Нажал кнопку — получил Intent, обработал — получил новое State. Никаких распиздяев и race conditions.

Итог, чувак? Для новых проектов мой выбор — Clean + MVVM. Заложил фундамент нормально — и потом не охуеешь, когда нужно будет фичу новую впихнуть. А для легаси-проектов, которые выглядят, будто их писали мартышлюшки с бананами, — только постепенный рефакторинг. Не пытайся всё переписать за неделю, а то накроется медным тазом всё, и дедлайн, и твои нервы.