-
Notifications
You must be signed in to change notification settings - Fork 128
Введение в VIPER
VIPER - это подход к архитектуре мобильных приложений (в частности - iOS), основанный на идеях Роберта Мартина, изложенных им в статье The Clean Architecture.
Основные задачи, которые помогает решить VIPER:
- Обеспечение более полного покрытия тестами слоя Presentation, обычно включающего в себя Massive View Controllers.
- Разбитие самых крупных классов наших приложений на набор элементов с более-менее четко определенными границами ответственности.
Важно сразу же отметить, что VIPER - это ни в коем случае не набор строгих шаблонов и правил. Скорее это перечень рекомендаций, следуя которым можно построить гибкую и переиспользуемую архитектуру мобильного приложения. Мы, iOS команда Rambler&Co, адаптировали некоторые из каноничных принципов и сформировали определенный набор Best Practices для разработки тех или иных юзкейсов.
Первоначально VIPER может ломать сознание, особенно разработчикам без опыта командной работы над крупными проектами - отсутствует понимание необходимости независимости модулей приложения друг от друга и максимально возможного покрытия их тестами. Тем не менее, весь набор решений оправдывает себя даже для небольших приложений.
Основные достоинства и недостатки VIPER:
Плюсы:
- Повышение тестируемости Presentation-слоя приложений.
- Полная независимость модулей друг от друга - это позволяет независимо их разрабатывать и переиспользовать как в одном приложении, так и в нескольких.
- Передача проекта другим разработчикам, либо внедрение нового, дается намного проще, так как общие подходы к архитектуре заренее определены.
Минусы:
- Резкое увеличение количества классов в проекте, сложности при создании нового модуля.
- Некоторые из принципов не ложатся напрямую на UIKit и подходы Apple.
- Отсутствие в открытом доступе набора конкретных рекомендаций, best practices и примеров сложных приложений.
Остальные части нашего руководства в подробностях раскроют каждый из этих пунктов, в том числе расскажут о том, как избавиться от перечисленных недостатков.
Небольшой ликбез по истории вопроса:
- 08.2012 - Статья The Clean Architecture от Роберта Мартина
- 12.2013 - Статья Introduction to VIPER от компании MutualMobile
- 06.2014 - Выпуск objc.io #13 со статьей Architecting iOS Apps with VIPER от тех же MutualMobile
- 07.2014 - Выпуск подкаста iPhreaks Show, в котором MutualMobile рассказывают о том, как появился VIPER, какие вопросы он решает, и как используется в их приложениях.
- 04.2015 - В рамках локального хакатона в Rambler&Co пишется первое приложение с использованием подходов VIPER.
- 12.2015 - У Rambler&Co больше десяти приложений на VIPER, как разрабатываемых в данный момент, так и выпущенных в AppStore.