Рефакторить легаси код? Только с юнит тестами!

Post on 04-Jul-2015

327 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

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

разрешите геолокацию

top related