Рефакторинг унаследованного кода: Как разорвать зависимости? Дмитрий Павлов Dodo Pizza
#msdevcon Зачем пиццерии 100 разработчиков?
#msdevcon DODO IS = Пицца + Софт
#msdevcon Интернет проникает накухню Software is everywhere!
#msdevcon
Цели #msdevcon Как менять legacy код без тестов? Техники разрыва зависимостей Маленькие шаги Wrap method Sprout method Extract & Override Parallel Design Preserve Signatures … Постепенный рефакторинг Baby Steps No breaking changes Точки стыка Швы А оно нам надо? Как не накосячить? Legacy Code Dilemma Тут такая специфика проекта, тесты не напишешь
#msdevcon Что такое унаследованный код?
Унаследованный Код Код, который не прошел тесты
#msdevcon Как изменять унаследованный код?
Как изменять унаследованный код? • Edit & Pray (от авторов «Хорошо подумай») • Cover & Modify (от создателей блокбастера «Правильные парни»)
Нужны юнит-тесты! • Нужны тесты, чтобы изменить код • Но, чтобы написать тесты нужно изменить код Legacy Code Dilemma (c)
Алгоритм внесения изменений 1. Определить точки изменения 2. Найти тестовые точки 3. Разорвать зависимости 4. Написать тесты 5. Внести изменения и отрефакторить код
Демонстрация #msdevcon Live Demo Техники разрыва зависимостей https://github.com/dodopizza/LegacyCode.BreakingDependenciesExamples
Практика #msdevcon Preserve Signatures
Практика #msdevcon Sprout Method Class
Практика #msdevcon Wrap Method Class
Практика #msdevcon Extract and Override
Практика #msdevcon Parallel Design
Практика #msdevcon Remove Static
Полезные ресурсы #msdevcon • Michael Feathers “Working Effectively with Legacy Code” https://www.amazon.com/Working- Effectively-Legacy-Michael- Feathers/dp/0131177052
Что дальше #msdevcon Техники разрыва зависимостей Безопасный рефакторинг Обед Cover & Modify Маленькие шаги Юнит-тесты Точки стыка Швы Подходите с вопросами Обсудим в узком круге. Присылайте резюме Приходите в гости Preserve Signature Sprout methodclass Wrap methodclass Extract & Override Parallel Design Remove Static
Q&A #msdevcon Рефакторинг унаследованного кода: Как разорвать зависимости? Дмитрий Павлов • d.pavlov@dodopizza.com • www.facebook.com/dmitry.y.pavlov • github.com/dmpavlov
Отзывы💖 Помогите нам стать лучше! На вашу почту отправлена индивидуальная ссылка на электронную анкету. 3 июня в 23:30 незаполненная анкета превратится в тыкву. Заполните анкету и подходите к стойке регистрации за приятным сюрпризом! #msdevcon Оставляйте отзывы в социальных сетях. Мы все читаем. Спасибо вам! 
© 2017 Microsoft Corporation. All rights reserved.

Refactoring Legacy Code - Breaking Dependencies Techniques

Editor's Notes

  • #8 Опишите, как задачи вы ставите перед мастер-классом или докладом. Что узнают участники и т.п.
  • #23 Опишите, что участникам стоит сделать дальше: что еще послушать, на что обратить внимание и .т.п.