TL;DR


Последний год отдел iOS разработки Rambler&Co собирал все инструкции, лучшие практики и советы по использованию архитектурного подхода VIPER. Целое, как водится, получилось большим, чем сумма всех его составляющих — и на выходе получилась отличная книга. И теперь мы готовы представить ее первое издание!


Ссылки на загрузку



Отдел iOS разработки в Rambler&Co начинался, по сути, с четырех человек. За первый год отдел вырос в четыре раза. Еще через год нас было уже двадцать пять. Параллельно мы разрабатываем более десяти проектов, причем достаточно разноплановых — почтовое приложение, клиент для блогоплатформы, медийные проекты. Одной из самых важных задач, которые мы должны были решить во время фазы быстрого роста, была стандартизация подходов к разработке приложений.


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


Конечно, внедрение VIPER в наши проекты происходило постепенно. Основная проблема, с которой мы столкнулись, заключалась в отсутствии единой базы знаний и практических примеров. Интернет был полон простых примеров использования этого подхода — экраны авторизации, списки задач. Эти приложения кратко показывали основные принципы взаимосвязи компонентов модуля, но не отвечали на более сложные вопросы: "как переходить от одного модуля к другому", "как реализовывать композицию модулей", "где писать общую бизнес-логику".


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



Книгу VIPER условно можно разделить на три части: теоретическая, практическая и приложения.


  • В теоретической части освещена общая структура модуля, как каноническая, так и с нашими дополнениями, история возникновения VIPER, вопросы кодогенерации и автоматизации создания модулей.
  • Практическая часть раскрывает те самые секреты, о которых умалчивают остальные источники информации — переходы между экранами, различные варианты композиции модулей, покрытие кода тестами, интеграцию VIPER с такими системными компонентами, как UIWebView и NSFetchedResultsController.
  • А в приложения вошел наш взгляд на Code Style в рамках VIPER модуля и подборки материалов для дальнейшего ознакомления с вопросом.

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


Первое издание Книги VIPER создавалось с помощью сервиса GitBook и доступно в сразу в нескольких форматах:



Кроме того, мы активно занимаемся переводом книги на другие языки (просит много людей) и будем благодарны за помощь в этом процессе.


Если у вас появятся какие-нибудь вопросы, предложения, или заметите опечатки — пишите нам в Issues.

Поделиться с друзьями
-->

Комментарии (28)


  1. Lends
    29.09.2016 11:48
    +3

    Без регистрации и СМС!


  1. ivanych
    29.09.2016 11:49
    +1

    Мне кажется, было бы неплохо добавить в пост пару строк про то, что вообще такое VIPER.


    1. MrGoliaf
      29.09.2016 12:10

      В книге об этом сказано.


      1. ivanych
        29.09.2016 12:18
        +3

        «Мы написали книгу, а о чем она — написано в книге». Оке.


        1. MrGoliaf
          29.09.2016 12:26
          +2

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


          1. ivanych
            29.09.2016 12:29
            +1

            Зачем минусовать? Люди трудились, молодцы. То, что я не представляю, что такое Viper, это никак не повод минусовать пост.


            1. MrGoliaf
              29.09.2016 12:31
              +1

              я про мой ответ вам.
              А ребятам большое спасибо!
              Будет интересно почитать.
              Как раз имеются пробелы в знаниях.


            1. GreenElephant
              29.09.2016 13:06

              Уже давно держу в закладках book of VIPER! Спасибо за труд!


              1. Igorsnakii
                30.09.2016 11:56

                Та жа история. Уже успешно внедрили на продакшен проект


    1. Spail
      29.09.2016 12:20

      Они в посте есть, надо просто почитать его.


      1. ivanych
        29.09.2016 12:27

        Можете процитировать?


        1. Spail
          29.09.2016 12:30

          Решением этого вопроса стал такой архитектурный подход, как VIPER. VIPER помог нам как в решении административных задач — единообразный подход к архитектуре


          1. ivanych
            29.09.2016 13:11

            И чего? Везде начали единообразно использовать VIPER. А что такое сам VIPER?


            1. Spail
              29.09.2016 13:45

              Подход к архитектуре мобильных приложений, очевидно.


  1. Bimawa
    29.09.2016 12:10

    Яхуууу ребят давайте к нашим https://ridero.ru на самиздат!


    1. MrGoliaf
      29.09.2016 12:11
      +1

      Я бы купил бумажную версию!


    1. mix2000
      03.10.2016 14:31

      -


  1. crucified
    29.09.2016 12:10

    Щикаарно )) Спасибо большое!


  1. LvinoeSerdce
    29.09.2016 12:10

    Великолепный труд, спасибо!


  1. kostyl
    29.09.2016 12:19

    Чтото вяло, и не понятно, как взаимодействуют подмодули, как грузятся изображения, подключается ли uikit в интеракторы, ой да куча вопросов…


    1. YourDestiny
      29.09.2016 12:21

      Про взаимодействие подмодулей и переходы между ними есть две отдельные главы. А вообще, как я упоминал, наши Issues всегда открыты для таких вопросов — будем рады помочь :)


      1. kostyl
        29.09.2016 12:28
        -1

        Да, то что написано конечно хорошо, но как говорят «покажите мне код»


        1. YourDestiny
          29.09.2016 13:07

          Для таких целей мы написали целый крупный проект на VIPER: https://github.com/rambler-ios/RamblerConferences


          1. kostyl
            29.09.2016 13:21

            Спасибо глянемс


  1. agent10
    29.09.2016 13:05

    А почему у вас VIPER используется только внутри команды iOS. Как же Android?


  1. bubuh
    29.09.2016 20:44

    YourDestiny у вас дублируются страницы c 39 по 48 (PDF).


  1. Makaveli
    30.09.2016 11:52
    +1

    Ваша упёртость в плане VIPER удивляет. Приятно удивляет :) одно дело пропагандировать и использовать, другое — ещё и книгу написать и выложить :) спасибо, наконец поподробнее разберусь с темой


  1. Shahmatist
    30.09.2016 11:56

    Просто бомба, спасибо!