#mbltdev: Практический пример переиспользования кода. Как...
DESCRIPTION
#MBLTdev: Конференция мобильных разработчиков Спикер: http://mbltdev.ru/TRANSCRIPT
Практический пример переиспользования кода. Как повысить качество и ускорить разработку.
Тарасов ДмитрийAрхитектор мобильных приложений, Тинькофф Банкe-mail: [email protected]
Мобильный Банк
Много общего● общий backend и похожее API● механизмы авторизации● кеширование● передача данных● хранение информации● элементы интерфейса● части бизнес-логики
Способы переиспользования кода
● copy-&-paste
Способы переиспользования кода
● copy-&-paste● jar
Способы переиспользования кода
● copy-&-paste● jar● Android Library Projects
Способы переиспользования кода
● copy-&-paste● jar● Android Library Projects● aar
Выбрали copy-paste
Сроки горят!!! ALARM!!!ASAP!!!
● переименования методов/классов● изменились сигнатуры● изменилась имплементация
○ без конфликтов○ взаимоисключающие изменения
Трудности при мердже
DON’TS copy-paste!
Команда
● мы не хотим это делать
Команда
● мы не хотим это делать● нужно привыкать работать с общим кодом
● мы не хотим это делать● нужно привыкать работать с общим кодом● больше ответственности
Команда
● постановка и уточнение● решение● ревью● тестирование● релиз
Схема работы с проектами
Схема работы с проектами
Схема работы с проектами
Git-workflow
Схема работы с проектами
Схема работы с проектами
Велосипедостроительство
DO’S ведите changelog
Потерянные изменения
Version-branches
Version-branches
Tags!
● слили все ветки в dev● проставили тэги● удалили version-branches
DO’S
● поддерживайте аккуратную историю коммитов● не допускайте беспорядка в VCS
Приложение Штрафы ГИБДД
Приложение Штрафы ГИБДД
Приложение Штрафы ГИБДД
ProGuard?
Приложение Штрафы ГИБДД
Можно, но долго!
Приложение Штрафы ГИБДД
Dex 64k problem (GMS ~20k)
DO’S модульная архитектура
● удобно (стильно, молодежно)● уменьшение связности кода● повышение уровня абстракции● более чистое API
Новый backend
● MoneyView ● EditMoney
MoneyAmount{
"amount": 100500, "currency": { "code": 643, "name": "RUB" }
}
Новый backend
{ … "amount": 23 "otherFields": … …}
Новый backend
Даешь рефакторинг!
DON’TS не завязывайтесь на модель
пишите максимально гибко и абстрактно
TO BE CONTINUED...
Наши советы● упаковка и хранение● модульность (gradle modules vs git
subtree/submodule)● простое удобное API● changelog● порядок в VCS● документация● имена ресурсов● тесты
Выводы● Плюсы
○ повышается скорость разработки○ уменьшается связность кода, улучшается
архитектура○ отлов ошибок○ единый user experience
● Минусы○ возросшая цена ошибки○ небольшой overhead на менеджмент○ бизнес не всегда понимает, зачем оно
СПАСИБО ЗА ВНИМАНИЕ