суббота, 6 марта 2010 г.

Эффективная работа с унаследованным кодом


Где-то месяц назад купил замечательную книгу Майкла Физерса "Эффективная работа с унаследованным кодом". Очень стимулирует писать собственные юнит-тесты и показывает, как выпутываться из сложных ситуаций при разработке этих тестов.

К сожалению, далеко не все мои коллеги беспокоятся о создании юнит-тестов, даже если "за глаза" и оценивают их применение положительно. Ну да ладно. К билд-серверу я их уже приучил, а теперь попробую приучать и к написанию тестов. Не всё даётся сразу. Попробую сначала создавать простые тесты сам, а от коллег требовать, чтобы эти тесты выполнялись. По крайней мере, хотя бы можно будет получить гарантию стабильности поведения важных для меня классов.

Другая сложность - это то, что я сам пишу GUI (на wxWidgets). Пока что мне не совсем ясно, как можно эффективно заводить под юнит-тесты все эти wxDialog'и. Скорее всего, проблема решается дроблением классов на кучу мелких. Однако в ближайшее время вряд ли мне удастся посвятить этому достаточно времени. Новую функциональность ввожу через тесты, а большинство старой приходится оставлять как есть. Время сильно ограничено. Да и CppUnit (созданный, кстати, автором этой книги) не слишком удобен в использовании. Но без него всё равно работать было бы только труднее :) Вчера пришлось полностью перелопатить логику работы одного служебного класса, и только поэтапное покрытие кода тестами в сочетании с контролем версий из-под git позволили мне к концу дня уверенно сказать, что класс работает правильно.