Персональные инструменты
 

Working Effectively with Legacy Code (Майкл Физерс, AgileDays-2008)

Материал из CustisWiki

Версия от 10:15, 22 октября 2012; StasFomin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Перейти к: навигация, поиск

Доклад Майкла Физерса был «guest star» всего мероприятия, хотя стоит отметить, что не все смогли выдержать плотную конференцию до самого конца — слушателей было существенно меньше, чем в начале дня.

Но тема доклада всегда актуальна, Legacy Code это вечное проклятие невезучих программистов (т.е. тех, которых бросают на поддержку чужого кода), и legacy code вечен — да, старые информационные системы умирают, но проходит пару лет, и даже твой супер-крутой код становиться legacy… . Трудно удержаться и не процитировать соответствующие комиксы Дильберта:

Legacy systems (Dilbert).jpg
Legacy code support (Dilbert).jpg


На модельном примере класса «расписание» (Schedule), написанном на Java, Физер показал как сделать его тестопригодным. Основной прием свелся к N-кратному применению Dependency injection. Причем, на наш вкус с некоторым перебором: даже статические helper-методы определения является ли день выходным или рабочим были перенесены в нестатический класс, а в тесте было предложено их «заглушить», написав соответствующего наследника. ИМХО это уже другая крайность: когда тестируется функциональность ровно одного класса, а всё, что он использует, либо заглушено при помощи Stub-ов, либо эмулируется при помощи Mock-ов (см. http://martinfowler.com/articles/mocksArentStubs.html). Это так можно получить результат как в репризе Райкина «претензии к пуговицам есть — нет, пришиты намертво…»


Майкл Физерс на AgileDays-2008.jpg


Видео в HD-качестве, смотрите в полноэкранном режиме.

HTML-код включения <iframe src="http://player.vimeo.com/video/25505404?byline=0&portrait=0" width="720" height="405" frameborder="0"></iframe>

Скачать → на странице видео на vimeo, кнопка «Download»

Видео в HD-качестве, смотрите в полноэкранном режиме.

HTML-код включения <iframe src="http://player.vimeo.com/video/25520076?byline=0&portrait=0" width="720" height="405" frameborder="0"></iframe>

Скачать → на странице видео на vimeo, кнопка «Download»

А пока, мы рекомендуем заинтересованным темой, прочитать книгу «Рефакторинг с использованием шаблонов».


2012.02.10_legacy_code.png


Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».


Репликация: База Знаний «Заказных Информ Систем» → «Working Effectively with Legacy Code (Майкл Физерс, AgileDays-2008)»