"avito Переезд delivery club на глобальное api" Давид Лашхи...
TRANSCRIPT
6 000 000 пользователей
более 30 000 заказов в день
7 лет на рынке
+
Миграция
Delivery Club Foodpanda
!" #$
%&
'()*
Было
Процесс работы на приложением
Дизайн ревью
Код ревью
Тесты Xcode
QA
Запуск приложения
Что мигрировать
Delivery Club Foodpanda
User
Vendor
Баллы Адреса Профиль
Меню Филиалы Информация
User
Vendor
Баллы Адреса Профиль
Меню Филиалы Информация
RESTJSONModel
FOOFOOFOO
Что мигрировать
&
&
+ Быстро исправляются ошибки
+ Бекенд не меняется
- Долгая настройка- Исправления одной и той же ошибки неск. раз
Миграция
Stage$!
Core Data
До После
AFNetworkingNetworkManagerNetworkManager Category
params, url, type
response / error
params, url, type
parsed response / parsed error
REST
NetworkManager + User
NetworkManager + Vendor
NetworkManager + Address
Геолокация
latitude longitude
City Street Building
Foodpanda API
Address
Yandex
DCProductVariationToppingsView *view = (DCProductVariationToppingsView *) [[UIViewController alloc] initWithNibName:@“DCProductVariationToppingsView" bundle:nil].view;
Концептуальные проблемы
MVC MVVMCocoaPods
Unit Tests
[DCAppDelegate appDelegate].managedObjectContext
Vendor *vendor; SomeVC * someVC = [[SomeVc alloc] init]; someVC.vendor = self.vendor;
Core Data- (NSManagedObjectContext *)createLocalContext { NSManagedObjectContext *localContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; [localContext setParentContext:self.managedObjectContext]; return localContext; }
NSString *vendorId; SomeVC *someVC = [[SomeVc alloc] init]; someVC.vendorId = self.vendorId;
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
Интеграция Swift
1) Новый код— на Swift
2) Меняется > 30%? — переделываем на Swift
Swift 2.2 -> Swift 3
Подходящее время для перехода на Swift:1) Переезд на новое API 2) Добавление или удаление нового функционала