Skip to content

Введение в VIPER

Egor Tolstoy edited this page Nov 11, 2015 · 2 revisions

VIPER - это подход к архитектуре мобильных приложений (в частности - iOS), основанный на идеях Роберта Мартина, изложенных им в статье The Clean Architecture.

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.