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

Post on 26-Jun-2015

944 Views

Category:

Mobile

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Тарасов ДмитрийAрхитектор мобильных приложений, Тинькофф Банкe-mail: d.tarasov@tcsbank.ru

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

Много общего● общий 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 на менеджмент○ бизнес не всегда понимает, зачем оно

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

top related