Рефакторить легаси код? Только с юнит тестами!
DESCRIPTION
Слайды воркшопа "Рефакторить легаси код? Только с юнит тестами!" на AgileDays 2014 в МосквеTRANSCRIPT
Рефакторить
легаси код?
Только с юнит
тестами!
Александр Андронов
Антон Бевзюк
Smart Step Group
SmartStepGroup
Инженерные практики
http://get.cardmone.net
Расписание
Поговорим об унаследованном коде
Практика. Пишем первый тест
Вырабатываем подход
Практика. Вводим новый функционал
Исходники
C#
git clone https://github.com/SmartStepGroup/AwfulVideoStore.git
Java
git clone https://github.com/SmartStepGroup/AwfulVideoStoreJava.git
Изменения в легаси коде?
Перепишем или так оставим?
В след раз точно будет лучше
http://devanswers.ru/
Цель
Показать, как покрыть
легаси код тестами,
ничего не сломав.
Добавляем новый функционал
Покрываем тестами
Делаем код тестируемым
Практика!
C#
git clone https://github.com/SmartStepGroup/AwfulVideoStore.git
Java
git clone https://github.com/SmartStepGroup/AwfulVideoStoreJava.git
Подмена понятий
Упражнение 1. Подмена понятий
Выделяем метод SellingReportService,
мешающий тесту - 10 минут
Инъекция зависимостей
Упражнение 2.
Инъекция зависимостей
Изолировать ISession в DefaultMovieService
– 10 минут
Sprout Method
Упражнение 3.
Sprout method
В SellingReportService не учитывать фильмы
18+
10 минут
Wrap Method
Упражнение 4.
Wrap method SellingReportService должен показывать
первые 5 фильмов в лучшей категории,
отсортированные по цене по убыванию
– 10 минут
Общий подход
• Находим зависимость от
технологий
• Изолируем каким-либо спобобом
• Пишем тест
Список литературы
http://blog.crisp.se/2013/10/11/henrikkniber
g/good-and-bad-technical-debt
Спасибо за внимание
http://get.cardmone.net
разрешите геолокацию