#mbltdev: Практический пример переиспользования кода. Как...

44
Практический пример переиспользования кода. Как повысить качество и ускорить разработку. Тарасов Дмитрий Aрхитектор мобильных приложений, Тинькофф Банк e-mail: [email protected]

Upload: e-legion

Post on 26-Jun-2015

950 views

Category:

Mobile


0 download

DESCRIPTION

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

TRANSCRIPT

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

Практический пример переиспользования кода. Как повысить качество и ускорить разработку.

Тарасов ДмитрийAрхитектор мобильных приложений, Тинькофф Банкe-mail: [email protected]

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

Мобильный Банк

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

Много общего● общий backend и похожее API● механизмы авторизации● кеширование● передача данных● хранение информации● элементы интерфейса● части бизнес-логики

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

Способы переиспользования кода

● copy-&-paste

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

Способы переиспользования кода

● copy-&-paste● jar

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

Способы переиспользования кода

● copy-&-paste● jar● Android Library Projects

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

Способы переиспользования кода

● copy-&-paste● jar● Android Library Projects● aar

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

Выбрали copy-paste

Сроки горят!!! ALARM!!!ASAP!!!

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

● переименования методов/классов● изменились сигнатуры● изменилась имплементация

○ без конфликтов○ взаимоисключающие изменения

Трудности при мердже

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

DON’TS copy-paste!

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

Команда

● мы не хотим это делать

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

Команда

● мы не хотим это делать● нужно привыкать работать с общим кодом

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

● мы не хотим это делать● нужно привыкать работать с общим кодом● больше ответственности

Команда

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

● постановка и уточнение● решение● ревью● тестирование● релиз

Схема работы с проектами

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

Схема работы с проектами

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

Схема работы с проектами

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

Git-workflow

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

Схема работы с проектами

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

Схема работы с проектами

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

Велосипедостроительство

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

DO’S ведите changelog

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

Потерянные изменения

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

Version-branches

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

Version-branches

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

Tags!

● слили все ветки в dev● проставили тэги● удалили version-branches

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

DO’S

● поддерживайте аккуратную историю коммитов● не допускайте беспорядка в VCS

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

Приложение Штрафы ГИБДД

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

Приложение Штрафы ГИБДД

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

Приложение Штрафы ГИБДД

ProGuard?

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

Приложение Штрафы ГИБДД

Можно, но долго!

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

Приложение Штрафы ГИБДД

Dex 64k problem (GMS ~20k)

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

DO’S модульная архитектура

● удобно (стильно, молодежно)● уменьшение связности кода● повышение уровня абстракции● более чистое API

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

Новый backend

● MoneyView ● EditMoney

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

MoneyAmount{

"amount": 100500, "currency": { "code": 643, "name": "RUB" }

}

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

Новый backend

{ … "amount": 23 "otherFields": … …}

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

Новый backend

Даешь рефакторинг!

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

DON’TS не завязывайтесь на модель

пишите максимально гибко и абстрактно

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

TO BE CONTINUED...

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

Наши советы● упаковка и хранение● модульность (gradle modules vs git

subtree/submodule)● простое удобное API● changelog● порядок в VCS● документация● имена ресурсов● тесты

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

Выводы● Плюсы

○ повышается скорость разработки○ уменьшается связность кода, улучшается

архитектура○ отлов ошибок○ единый user experience

● Минусы○ возросшая цена ошибки○ небольшой overhead на менеджмент○ бизнес не всегда понимает, зачем оно

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

СПАСИБО ЗА ВНИМАНИЕ