Technologies

VIPER

VIPER — шаблон проектирования приложения с распределенной модульной архитектурой. Это популярная альтернатива паттернам MVC, MVP и MVVM, которая упрощает работу над проектом для больших команд, позволяет легко проводить юнит-тесты и повторно использовать код.

 

VIPER используется для разработки под iOS, но у Android есть аналог шаблона — Clean Architecture, который использовали, как основу для этой архитектуры.

Как работает VIPER
01
View

Представление — модуль слоя интерфейса, отображающий изменения переданные Presenter и отправляющий ему обратно информацию о действиях пользователя.

02
Interactor

Основная бизнес-логика приложения, не связанная с интерфейсом. Получает данные из базы, вынесенной в отдельный модуль Model, через прослойку Entity.

03
Presenter

Модуль-посредник, отвечающий за передачу данных между View и Interactor. Чтобы информация из базы корректно отображалась в интерфейсе, он форматирует ее, создавая соответствующий экземпляр класса.

04
Entity

Хранилище объектной модели, к которой обращается Interactor. Содержит только объекты данных без бизнес-логики.

05
Router

Навигационная логика, описывающая, как будут происходить действия вызванные пользователем в приложении.

Помимо этого в приложениях с архитектурой VIPER сохраняется видоизмененный слой Model — база данных с менеджерами сетевых и локальных запросов, к которым будет обращаться Interactor. Эти зависимости не входят в общий шаблон и могут быть реализованы классическим способом. Кроме того, разработчики могут добавлять и другие слои и оболочки, чтобы оптимизировать проект под конкретные задачи, но основные части приложения все равно будут работать по описанному шаблону.

Почему разработчики используют VIPER
01
01
Раздельные модули и чистый код

Все архитектуры ПО предназначены для того, чтобы упростить и упорядочить совместную разработку. С Viper, в котором больше раздельных модулей, чем в классических паттернах, эти задачи решаются максимально эффективно. Помимо возможности задействовать больше людей, сам код с использованием такой архитектуры будет чище, структурирование и компактнее, а главное пригодным для повторного использования. Это обусловлено тем, что у каждого модуля есть своя четкая зона ответственности, а не размытая, как в MVVM, и много классов для быстрого изменения любого блока.

02
02
Масштабируемость

Слабая связность с высоким зацеплением в Viper позволяет в любой момент доработать функциональность приложения, поместив ее в отдельный модуль, возможно, совсем без влияния на другие компоненты программы. И все это с минимальным количеством конфликтов слияния.

03
03
Дополнительные модули

Router, отвечающий за навигацию, позволяет переиспользовать компоненты интерфейса и View в целом, не трогая другие модули, значительно экономя время на разработку. Entities снижает нагрузку на Model и делает систему более быстрой и устойчивой.

04
04
Разработка на основе тестирования

Viper — идеальная архитектура для Test Driven Development (TDD). 99% всего кода приложения могут быть покрыты тестами без существенных затрат времени, как при использовании любой другой архитектуры. Это возможно, благодаря тому, что бизнес-логика и интерфейс приложения, при такой разработке, связаны очень слабо и можно писать множество автоматических тестов.

Заключение

Ваши разработчики будут знать, какой шаблон проектирования лучше для проекта, как только вы опишите им что должно делать ваше приложение. VIPER — одна из базовых архитектур приложения на iOS, которая оптимально подходит для масштабных проектов. Она требует от разработчиков большего опыта и навыков, но зато позволяет с минимумом затрат дорабатывать приложение, когда это будет необходимо. Кроме того, VIPER позволяет легко тестировать в автоматическом режиме буквально каждый кусочек кода, что одинаково хорошо для проектов любого масштаба.

Разработка мобильных приложений
Разработка мобильных приложений

Разрабатываем приложения, которые решают бизнес-задачи клиентов и упрощают жизнь пользователей. Даже если эти задачи — со звёздочкой. Доставляем их в каждую ладошку и карман.