Переписал карточку VIPER в базе знаний
Недавно получил комментарий на один из слоёв VIPER и в ходе общения понял, что по VIPER можно много чего добавить.
К примеру диаграмму взаимодействия слоёв между собой, или еще лучше раскрыть как из одного VIPER модуля передать данные в другой VIPER модуль. Все эти любимые module input, output.
И так одно дополнение за другим и много чего удалось добавить в карточку по VIPER. Вот список того, чем дополнил:
1. Чтобы лучше понять "зачем вообще VIPER" стоит с чем-то сравнить. Один и тот же экран сначала написан одним UIViewController, и видно, что в нём перемешано: запрос, сортировка, формат даты и переход. На основе этого предмета указал, что из слоёв разгружает этот God Object.
2. Путь одного тапа - схема всего сценария, от загрузки списка до открытого экрана статьи: кто кого вызывает. Рядом таблица, какой протокол за что отвечает, название и всё необходимое.
3. Каждый компонент отдельно - View, Presenter, Interactor, Entity, Router и Assembly: что делает каждый и кого держит. Докинул конкретных примеров для каждого слоя, добавил дизайн приложения, чтобы лучше понять слой и код внутри, что слой принимает и отправляет в другой слой.
4. Тот же экран новостей в MVC, MVP, MVVM, MVVM с координатором и MVI, плюс Clean Swift на схеме. Таблица: где в каждой архитектуре лежит логика, как её тестируют и что когда выбирать. Если на собесе спросят, чем VIPER отличается от MVVM, ответ здесь и он хорошо поможет.
После всех этих добавлений карточка про VIPER стала ещё более понятной и информативной. К примеру диаграммы и картинки дадут прозрачнее и доходчивее объяснение.
Чтобы не пришлось несколько раз перечитывать для тех, кто погружается впервые 🌪️