tК°conf. Как мы делали ЖЖ. Егор Толстой
Post on 15-Apr-2017
37 Views
Preview:
TRANSCRIPT
EGOR TOLSTOY RAMBLER&CO08 Окт 2016 17:30
Пять историй про ЖЖОтветы на все животрепещущие вопросы! Причем тут Рамблер? API нестабильно - как с этим жить? Чем помогает VIPER? Uni-подожди-подожди-directional data flow - он тут каким боком? Как обеспечить концептуальную целостность в большом проекте?
5002.5k @igrekde
2
Продуктологи
3
Продуктологи Аналитики
4
Продуктологи Аналитики Дизайнеры
5
Продуктологи Аналитики Дизайнеры
Разработчики
6
Продуктологи Аналитики Дизайнеры
Разработчики QA
7
Продуктологи Аналитики Дизайнеры
Разработчики QA ПМы
8
Чем помогают налаженные процессы
разработки?
9
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
10
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
11
12
13
1999 2005 2007 2013 2014
14
1999 2005 2007 2013 2014
15
1999 2005 2007 2013 2014
16
1999 2005 2007 2013 2014
17
1999 2005 2007 2013 2014
18
19
20
3957 коммитов 2888 unit-тестов
30 VIPER модулей >800 стейтов экранов
>700 code-review
21
Сентябрь
2015 года
22
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
23
Бэкенд сложный
😃
24
Бэкенд не для мобильных
😅
25
Бэкенд не один
😰
26
<member> <name>journal</name> <value> <string>tema</string> </value> </member>
{ journal : tema }
27
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
28
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
29
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation
30
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperation
get_post
get_comments
send_comment
NSOperationNSOperationNSOperationNSOperationNSOperation
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperationNSOperationNSOperationNSOperationNSOperationNSOperation
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperationNSOperationNSOperationNSOperationNSOperationNSOperation
31
@interface OperationConfig : NSObject
@property DeserializerType deserializerType; @property MapperType mapperType;
@end
32
33
34
Создание
запроса
Подпись
запроса
Отправка
в сеть
Десери-
ализацияВалидация Маппинг
OAuth 1.0
OAuth 2.0
35
Проектируя, учитывайте особенности окружения
36
https://github.com/rambler-digital-solutions/
rambler-it-ios
37
Ноябрь
2015 года
38
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
39
40
Переиспользование, тестируемость, простота!
41
42
43
44
RDSTagModule
45
Модуль ленты постов
Модуль поиска
Модуль коммента-
риев
Модуль каталога
Сервис постов
Сервис людей
46
Экран 1 Экран 4Экран 2 Экран 3
АПИ МЕНЕДЖЕР!!
111
47
Стандартизация - залог успеха
48
https://github.com/rambler-digital-solutions/
The-Book-of-VIPER
49
Февраль
2016 года
50
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
51
View Presenter Interactor
Router
PostService
52
View Presenter Interactor
Router
PostService
StrategyFactory
53
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory
54
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
55
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
MediaService
FeedService
TopService
56
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
MediaService
FeedService
TopService
Helper2Helper1 Helper3
57
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
MediaService
FeedService
TopService
Helper2Helper1 Helper3
Router2Router1 Router3Manager
Factory
ManagerFactory
FactoryFactory
Helper2Helper1 Helper3
58
59
60
61
62
63
ContentListModule
MainModule
64
Module PostService
CoreData
пишет
читает
65
Module PostService
CoreData
пишет
читает
ContentModule
66
MainModule PostService
CoreData
пишет
ContentModuleуведомляет
67
Не стройте сложные системы
68
Сентябрь
2015 года -
наше время
69
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
70
«Мифический человеко-месяц», Фредерик Брукс
71
72
73
Presentation layer
Service layer
Core layer
74
]] ]] ]] ]] ]] ]]
]] ]] ]]Code Review
develop branch
feature branch
75
76
350 review за 5 месяцев
77
Культивируйте коллективное
владение кодом
Гибкая архитектура
Коллективное владение кодом
Стандартизация процессов
https://appsto.re/ru/7Ogzbb.i
Гибкая архитектура
Коллективное владение кодом
Стандартизация процессов
https://appsto.re/ru/7Ogzbb.i
Талисман LiveJournal по имени Фрэнк
top related