Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Практический пример переиспользования кода. 
Как повысить качество и ускорить разработку. 
Тарасов Дмитрий 
Aрхитектор моб...
Мобильный Банк
Много общего 
● общий 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 модульная архитектура 
● удобно (стильно, молодежно) 
● уменьшение связности кода 
● повышение уровня абстракции 
● б...
Новый 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 
● cha...
Выводы 
● Плюсы 
○ повышается скорость разработки 
○ уменьшается связность кода, улучшается 
архитектура 
○ отлов ошибок 
...
СПАСИБО ЗА ВНИМАНИЕ
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и ускорить разработку (ТКС Банк)
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и ускорить разработку (ТКС Банк)
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и ускорить разработку (ТКС Банк)
Upcoming SlideShare
Loading in …5
×

#MBLTdev: Практический пример переиспользования кода. Как повысить качество и ускорить разработку (ТКС Банк)

1,844 views

Published on

#MBLTdev: Конференция мобильных разработчиков
Спикер:
http://mbltdev.ru/

Published in: Mobile
  • Login to see the comments

#MBLTdev: Практический пример переиспользования кода. Как повысить качество и ускорить разработку (ТКС Банк)

  1. 1. Практический пример переиспользования кода. Как повысить качество и ускорить разработку. Тарасов Дмитрий Aрхитектор мобильных приложений, Тинькофф Банк e-mail: d.tarasov@tcsbank.ru
  2. 2. Мобильный Банк
  3. 3. Много общего ● общий backend и похожее API ● механизмы авторизации ● кеширование ● передача данных ● хранение информации ● элементы интерфейса ● части бизнес-логики
  4. 4. Способы переиспользования кода ● copy-&-paste
  5. 5. Способы переиспользования кода ● copy-&-paste ● jar
  6. 6. Способы переиспользования кода ● copy-&-paste ● jar ● Android Library Projects
  7. 7. Способы переиспользования кода ● copy-&-paste ● jar ● Android Library Projects ● aar
  8. 8. Выбрали copy-paste Сроки горят!!! ALARM!!! ASAP!!!
  9. 9. Трудности при мердже ● переименования методов/классов ● изменились сигнатуры ● изменилась имплементация ○ без конфликтов ○ взаимоисключающие изменения
  10. 10. DON’TS copy-paste!
  11. 11. Команда ● мы не хотим это делать
  12. 12. Команда ● мы не хотим это делать ● нужно привыкать работать с общим кодом
  13. 13. Команда ● мы не хотим это делать ● нужно привыкать работать с общим кодом ● больше ответственности
  14. 14. Схема работы с проектами ● постановка и уточнение ● решение ● ревью ● тестирование ● релиз
  15. 15. Схема работы с проектами
  16. 16. Схема работы с проектами
  17. 17. Git-workflow
  18. 18. Схема работы с проектами
  19. 19. Схема работы с проектами
  20. 20. Велосипедостроительство
  21. 21. DO’S ведите changelog
  22. 22. Потерянные изменения
  23. 23. Version-branches
  24. 24. Version-branches
  25. 25. Tags! ● слили все ветки в dev ● проставили тэги ● удалили version-branches
  26. 26. DO’S ● поддерживайте аккуратную историю коммитов ● не допускайте беспорядка в VCS
  27. 27. Приложение Штрафы ГИБДД
  28. 28. Приложение Штрафы ГИБДД
  29. 29. Приложение Штрафы ГИБДД ProGuard?
  30. 30. Приложение Штрафы ГИБДД Можно, но долго!
  31. 31. Приложение Штрафы ГИБДД Dex 64k problem (GMS ~20k)
  32. 32. DO’S модульная архитектура ● удобно (стильно, молодежно) ● уменьшение связности кода ● повышение уровня абстракции ● более чистое API
  33. 33. Новый backend ● MoneyView ● EditMoney
  34. 34. MoneyAmount { "amount": 100500, "currency": { "code": 643, "name": "RUB" } }
  35. 35. Новый backend { … "amount": 23 "otherFields": … … }
  36. 36. Новый backend Даешь рефакторинг!
  37. 37. DON’TS не завязывайтесь на модель пишите максимально гибко и абстрактно
  38. 38. TO BE CONTINUED...
  39. 39. Наши советы ● упаковка и хранение ● модульность (gradle modules vs git subtree/submodule) ● простое удобное API ● changelog ● порядок в VCS ● документация ● имена ресурсов ● тесты
  40. 40. Выводы ● Плюсы ○ повышается скорость разработки ○ уменьшается связность кода, улучшается архитектура ○ отлов ошибок ○ единый user experience ● Минусы ○ возросшая цена ошибки ○ небольшой overhead на менеджмент ○ бизнес не всегда понимает, зачем оно
  41. 41. СПАСИБО ЗА ВНИМАНИЕ

×