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 дозволяє легко тестувати в автоматичному режимі буквально кожен шматочок коду, що однаково добре для проєктів будь-якого масштабу.

Розробка мобільних додатків
Розробка мобільних додатків

Створюємо мобільні додатки, які вирішують бізнес-задачі клієнтів та спрощують життя користувачів. Навіть якщо ці задачі — із зірочкою. Доставляємо їх у кожну долоньку та кишеню.