Детские шаги

img_8433В эту пятницу я провел несколько мучительных часов в попытке слегка подкорректировать разрабатываемое нами приложение: вынести часть логики из одного класса в другой (поместить его на уровень выше).

В процессе изменения одной части кода возникало желание поменять ещё и соседние функции, благо все изменения лежали в рамках намеченной цели. Много маленьких модификаций, которые не должны были сильно повлиять на общую работу, повлекли за собой сбой во многих тестах.

Я провел 4 часа в попытках привести тесты и код в порядок. Потерял уверенность в стабильности нашей системы и уже был готов к тому, что проведу все выходные с мыслями о том, как же мне все переделать, чтобы было красиво и работало 🙂

За час до конца рабочего дня я открыл книжку Кента Бека “Test Driven Development”, чтобы вдохновиться. Просмотрев пару страниц я обратил внимание на одну фразу, которая помогла мне вспомнить один из важных принципов TDD и XP – Baby Steps: делать за один шаг очень маленькие изменения и проверять их, запуская все тесты.

Я взял лист бумаги, написал список желаемых изменений и определил порядок их внесения. Откатил проект к предыдущей версии, не смотря на то, что мой код казался мне очень хорошим и было жаль потраченного на его написание времени. Начал последовательную реализацию пунктов списка и после каждого запускал тесты.

Последовательные изменения и малое количество “упавших” тестов позволяли четко видеть причину. Я правил тесты и добивался их 100% работы. Делал commit в репозиторий и переходил к следующему пункту своего списка.

В итоге вся работа была выполнена за 40 минут. В конце рабочего дня я был уверен в системе, в себе и в том, что проведу хорошие выходные.

Внося изменения в систему делайте маленькие шаги. Контролируйте поток своих желаний и идей. Фиксируйте их на листе бумаги, а не в коде. Я отступил от этого правила, за что и был наказан.

Tags: , , ,

Post Author

This post was written by who has written 22 posts on Agile.by.

  • http://thetorch.ru/ Денис Петелин

    Мы на эти грабли наступили – затеяли как-то рефакторинг подзабив на юнит тесты (чего их править – один фиг после рефакторинга много чего поменяется).
    Проект просто рассыпался. Пришлось взять тайм-аут на неделю чтоб восстановить работоспособность 🙂