11. 1. ЕСТЬ ЛИ LEGACY CODE?
1.ЕСТЬЛИLEGACYCODE?
Коллеги говорят
● Лучше “проект с нуля”
● Не люблю сидеть на
поддержке
● Перенести на новый
фреймворк
● Проект отдали нам после
неудачи с предыдущим
исполнителем
12. 1. ЕСТЬ ЛИ LEGACY CODE?
1.ЕСТЬЛИLEGACYCODE?
Коллеги говорят
● Лучше “проект с нуля”
● Не люблю сидеть на
поддержке
● Перенести на новый
фреймворк
● Проект отдали нам после
неудачи с предыдущим
исполнителем
Чем грозит?
● Отсутствие роста
● Старые технологии
● Поддержка
● Постоянные
исправления багов
17. ● Legacy code is simply
code without tests ● Код без тестов
18. ● Legacy code is simply
code without tests
● An old running system
critical for the
business, hard and
expensive to maintain,
improve and expand
● Код без тестов
● Критически важный для
бизнеса
● Сложный
● Дорогой в поддержке и
развитии
19. ● Legacy code is simply
code without tests
● An old running system
critical for the
business, hard and
expensive to maintain,
improve and expand
● Valuable code we’re
afraid to change
● Код без тестов
● Критически важный для
бизнеса
● Сложный
● Дорогой в поддержке и
развитии
● Ценный
● Страшный
20. ● Legacy code is simply
code without tests
● An old running system
critical for the
business, hard and
expensive to maintain,
improve and expand
● Valuable code we’re
afraid to change
● Code that’s too scary
to update and too
profitable to delete
● Код без тестов
● Критически важный для
бизнеса
● Сложный
● Дорогой в поддержке и
развитии
● Ценный
● Страшный
● Слишком прибыльный, чтобы
выбросить
27. 2. СИМПТОМЫ LEGACY CODE
2.Симптомы
● Перегруженность
● Постоянные исправления багов
● Состояние срочности
● Небольшое изменение требует
много времени
● Незначительное изменение
невозможно
55. 8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
● Design Patterns
● Clean code
● TDD, DDD, BDD
● Functional programming
56. 8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
● Design Patterns
● Clean code
● TDD, DDD, BDD
● Functional programming
Другое мнение?
57. 8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
● Design Patterns
● Clean code
● TDD, DDD, BDD
● Functional programming
● When you look at routine and
it is pretty much what you’ve
expected.
● Time to implement new
feature or fix a bug
Другое мнение?
59. 8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
● Откладывание на потом. “Завтра переделаю”
● Technical debt настолько высок, что никогда не
будет “выплачен”
● Малопонятный код. “Дизайн под себя”.
61. 9. СКОРОСТЬ КАК ПРИЧИНА
9.Скорость
Заказчик: Сколько времени сделать Web API?
Разработчик: 1 день
Заказчик: Отлично!
Тестировщик: И 2 дня на тестирование.
Заказчик: Ну, хорошо.
Разработчик: И надо будет отрефакторить код. 5 дней.
Заказчик: WTF?
62. 9. СКОРОСТЬ КАК ПРИЧИНА
9.Скорость
● Быстрая разработка
● Плохое понимание бизнес идеи
64. 10. УДАЧА КАК ПРИЧИНА
10.Удача
● Вера в свой код
● Отсутствие тестов
● Рефакторинг на удачу
● Документация - потом
● Люди знают
65. Закон Мерфи
● Правим код по 20 раз
● Занимаемся дебагом
● Рефакторинг изменяет
функциональность и
приносит сюрпризы
● Документации нет
● Ключевые люди ушли
79. 12.Надежда
Легаси проект доказывает
свою ценность уже одним
своим существованием.
Если плохо реализованная
идея приносит прибыль,
то хорошо работающая - тем
более.
85. ИСТОЧНИКИ
Источники
● Dylan Beattie. Ctrl-Alt-Del: Learning to Love Legacy Code. .NET Fest
2018
https://www.youtube.com/watch?v=cagKbOTXRuA
● Legacy Code: Big Rewrite or Progressive Rejuvenation? - Uberto
Barbini | #LeadDevLondon 2018
https://www.youtube.com/watch?v=-lB74Zg3QSw
● Surviving Legacy Code with JB Rainsberger
https://www.youtube.com/watch?v=d9ktOSUH63w
86. ИСТОЧНИКИ
● The Strangler pattern in practice
https://www.michielrook.nl/2016/11/strangler-pattern-practice/
● Lessons from 6 software rewrite stories
https://medium.com/@herbcaudill/lessons-from-6-software-rewrite-
stories-635e4c8f7c22
● StranglerFigApplication
https://martinfowler.com/bliki/StranglerFigApplication.html
● Testing and Refactoring Legacy Code
https://www.youtube.com/watch?v=_NnElPO5BU0
Источники