TК°Conf. Как мы делали ЖЖ. Егор Толстой

Preview:

Citation preview

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 по имени Фрэнк

Recommended