Five Stories about LiveJournal

Five Stories about LiveJournal

Some technical stories about LiveJournal application development: VIPER, code review, compound operations and so on.

Faf4a633b0d1e32a07a071039686c868?s=128

Egor Tolstoy

October 08, 2016
Tweet

Transcript

  1. EGOR TOLSTOY RAMBLER&CO 08 Окт 2016 17:30 Пять историй про

    ЖЖ Ответы на все животрепещущие вопросы! Причем тут Рамблер? API нестабильно - как с этим жить? Чем помогает VIPER? Uni-подожди-подожди-directional data flow - он тут каким боком? Как обеспечить концептуальную целостность в большом проекте? 500 2.5k @igrekde
  2. 2 Продуктологи Аналитики Дизайнеры Разработчики QA ПМы

  3. 3 Чем помогают налаженные процессы разработки?

  4. 4 Про Rambler&Co и ЖЖ Смиряемся со сложным API Как

    VIPER делает жизнь проще Упрощаем логику лент постов Про концептуальную целостность
  5. 5 Про Rambler&Co и ЖЖ Смиряемся со сложным API Как

    VIPER делает жизнь проще Упрощаем логику лент постов Про концептуальную целостность
  6. 6

  7. 7

  8. 8 1999 2005 2007 2013 2014

  9. 9 1999 2005 2007 2013 2014

  10. 10 1999 2005 2007 2013 2014

  11. 11 1999 2005 2007 2013 2014

  12. 12 1999 2005 2007 2013 2014

  13. 13

  14. 14

  15. 15 3957 коммитов 2888 unit-тестов 30 VIPER модулей >800 стейтов

    экранов >700 code-review
  16. 16 Про Rambler&Co и ЖЖ Смиряемся со сложным API Как

    VIPER делает жизнь проще Упрощаем логику лент постов Про концептуальную целостность
  17. 17 Бэкенд сложный

  18. 18 Бэкенд не для мобильных

  19. 19 Бэкенд не один

  20. 20 <member> <name>journal</name> <value> <string>tema</string> </value> </member> { journal :

    tema }
  21. 21 Создание запроса Подпись запроса Отправка в сеть Десери- ализация

    Валидация Маппинг
  22. 22 Создание запроса Подпись запроса Отправка в сеть Десери- ализация

    Валидация Маппинг
  23. 23 Создание запроса Подпись запроса Отправка в сеть Десери- ализация

    Валидация Маппинг NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation
  24. 24 Создание запроса Подпись запроса Отправка в сеть Десери- ализация

    Валидация Маппинг NSOperation NSOperation get_post get_comments send_comment NSOperation NSOperation NSOperation NSOperation NSOperation Создание запроса Подпись запроса Отправка в сеть Десери- ализация Валидация Маппинг NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation Создание запроса Подпись запроса Отправка в сеть Десери- ализация Валидация Маппинг NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation
  25. 25 @interface OperationConfig : NSObject @property DeserializerType deserializerType; @property MapperType

    mapperType; @end
  26. 26

  27. 27

  28. 28 Создание запроса Подпись запроса Отправка в сеть Десери- ализация

    Валидация Маппинг OAuth 1.0 OAuth 2.0
  29. 29 Проектируя, учитывайте особенности окружения

  30. 30 https://github.com/rambler-digital-solutions/ rambler-it-ios

  31. 31 Про Rambler&Co и ЖЖ Смиряемся со сложным API Как

    VIPER делает жизнь проще Упрощаем логику лент постов Про концептуальную целостность
  32. 32

  33. 33 Переиспользование, тестируемость, простота!

  34. 34

  35. 35

  36. 36 RDSTagModule

  37. 37 Модуль ленты постов Модуль поиска Модуль коммента- риев Модуль

    каталога Сервис постов Сервис людей
  38. 38 Экран 1 Экран 4 Экран 2 Экран 3 АПИ

    МЕНЕДЖЕР!! 111
  39. 39 Стандартизация - залог успеха

  40. 40 https://github.com/rambler-digital-solutions/ The-Book-of-VIPER

  41. 41 Про Rambler&Co и ЖЖ Смиряемся со сложным API Как

    VIPER делает жизнь проще Упрощаем логику лент постов Про концептуальную целостность
  42. 42 View Presenter Interactor Router PostService

  43. 43 View Presenter Interactor Router PostService StrategyFactory

  44. 44 View Presenter Interactor Router PostService StrategyFactory AnotherFactory

  45. 45 View Presenter Interactor Router PostService StrategyFactory AnotherFactory FactoryFactory

  46. 46 View Presenter Interactor Router PostService StrategyFactory AnotherFactory FactoryFactory MediaService

    FeedService TopService
  47. 47 View Presenter Interactor Router PostService StrategyFactory AnotherFactory FactoryFactory MediaService

    FeedService TopService Helper2 Helper1 Helper3
  48. 48 View Presenter Interactor Router PostService StrategyFactory AnotherFactory FactoryFactory MediaService

    FeedService TopService Helper2 Helper1 Helper3 Router2 Router1 Router3 Manager Factory Manager Factory Factory Factory Helper2 Helper1 Helper3
  49. 49

  50. 50

  51. 51

  52. 52 ContentListModule MainModule

  53. 53 Module PostService CoreData пишет читает

  54. 54 Module PostService CoreData пишет читает ContentModule

  55. 55 MainModule PostService CoreData пишет ContentModule уведомляет

  56. 56 Не стройте сложные системы

  57. 57 Про Rambler&Co и ЖЖ Смиряемся со сложным API Как

    VIPER делает жизнь проще Упрощаем логику лент постов Про концептуальную целостность
  58. 58 «Мифический человеко-месяц», Фредерик Брукс

  59. 59

  60. 60

  61. 61 Presentation layer Service layer Core layer

  62. 62 ]] ]] ]] ]] ]] ]] ]] ]] ]]

    Code Review develop branch feature branch
  63. 63

  64. 64 350 review за 5 месяцев

  65. 65 Культивируйте коллективное владение кодом

  66. Гибкая архитектура Коллективное владение кодом Стандартизация процессов https://appsto.re/ru/7Ogzbb.i