Что такое VIP цикл
Что проверяют
Понимаете ли вы, чем однонаправленный цикл отличается от привычного двустороннего общения экрана и посредника, и способны ли назвать цену такой архитектуры, а не только плюсы из статьи.
Как отвечать
VIP это цикл из подхода Clean Swift: контроллер, интерактор, презентер и снова контроллер. Поток строго в одну сторону. Контроллер собирает объект запроса и отдаёт интерактору. Интерактор выполняет сценарий, ходит за данными через воркер и передаёт презентеру объект ответа. Презентер превращает ответ в модель отображения, где все строки и даты уже отформатированы, и отдаёт её контроллеру, которому остаётся разложить готовые значения по элементам. Рядом стоит роутер: переходы и передача данных на следующий экран. Типы запроса, ответа и модели отображения обычно лежат вместе, по набору на каждый сценарий экрана.
Связи описаны протоколами, и каждый участник знает только следующего. Отсюда тестируемость: любой шаг проверяется отдельно, следующий подменяется заглушкой, и тест сравнивает, что именно ему передали. Замыкание цикла держится на слабой ссылке презентера на контроллер, иначе экран не освобождается.
Обязательно скажите про цену: на простой экран выходит несколько файлов и заметное количество шаблонного кода, а на SwiftUI, где состояние вью декларативное и обновляется само, схема ложится плохо. Это честный ответ, и его ждут больше, чем пересказ преимуществ.
Где спотыкаются
Путают VIP с VIPER. Там презентер стоит в центре и связи двусторонние, здесь цикл замкнут и ввод идёт от контроллера к интерактору, а презентер только форматирует и никого не спрашивает.
Второе: ломают цикл ради мелочи. Контроллер дёргает презентер напрямую, минуя интерактор, или презентер держит сильную ссылку на контроллер. В первом случае разваливается тестируемость, во втором экран остаётся в памяти после закрытия.
Третье: раскладывают код не по тем ролям. Бизнес-правила заезжают в презентер, форматирование дат в интерактор, и тесты начинают проверять совсем не то, что задумано. На вопрос, зачем такая схема, отвечают «так принято», хотя ждут двух вещей: что упростилось в тестах и чем за это заплатили.