Test-Driven Development by example / Разработка через тестирование по примерам

«Мы не стали программистами чтобы убивать людей…» – uncle Bob.

Интересное предложение, которое может быть интерпретировано разными способами, в особенности если вы программируете логику для оружия. Но это не то, что имел ввиду дядюшка Боб. Что он подразумевал, так это баги в программах, которые в последствии ведут к гибели человека, а таких сценариев придумать можно много, но можно и не придумывать, а поискать в интернете и, к сожалению, примеров достаточно.

Я не знаю почему начал с такой «оптимистической» ноты — когда я сел писать мысли о прочтенной книге, именно эта цитата пришла в голову. Исторически я начал программирование довольно традиционно — пишешь код, потом тыкаешь в программу и вроде все работает. Года 4 назад мне повезло и я работал с людьми, которые практиковали TDD (разработка через тестирование) ремесло. Я присосался на сколько мог и с того момента стал поклонником методики. Традиционно, программисты знают как «правильно» писать код и тесты, однако не все субъективные «правила» тесто-писания улеглись в моих мозгах. Некоторые из них меня напрягали, зудели и всячески не хотели приживаться. Визуально некоторые из правил выглядели так: если деталь куда-то не влазит, то по «правилам» нужно взять молоток, да побольше, и бить, пока не влезет, а когда расплющенная деталь влезла в разбитый корпус, тогда берешь напильник и замазку — «эх, говорил же тебе, что все влезет!!!».

Я никогда не умел забивать (привет дяде Роме и уже сгнившему забору на даче). По этой причине я продолжил изучать эту тематику. С опытом и дополнительными знаниями, я понял, что нет точных/абсолютных правил написания тестов, есть только основные (Three Laws Of TDD by uncle Bob). Все зависит от системы, кода и кучи других не сильно замысловатых факторов.

По иронии судьбы, к моменту «прозрения» я наткнулся на эту книгу. Кент Бэк обнаружил TDD технику в “древних” книгах по программированию и решил возродить ремесло. В этой книги Кент затрагивает многие темы, начиная от базовых примеров и заканчивая ответами на тяжелые вопросы: «а когда тест считается слишком большим?». Автор затрагивает многие типичные проблемы, которые вы рано или поздно встретите в TDD разработке, и даёт как конкретные, так и философские ответы. Этот материал является, на мой субъективный взгляд, основой, так как в индустрии можно найти много разных интерпретаций, в особенности, если смотреть TDD дебаты на YouTube-е.

Если вы заинтересованы в ремесле, стоит читать книгу, однако подготовьтесь — первые 40 страниц могут показаться нудными и тривиальными, однако не стоит их пропускать. Автор разбивает темы на под-темы и короткие отдельные главы — с одной стороны это немного раздражает, но со временем медленно вырисовывается шаблон. Шаблон служит как пример: мышления и написания кода. Очень интересно проходит параллель между изложением книги и программированием. Чувствуется, что автор книгу не писал, а программировал — название самой книги на 100% отображается в материале!

Не все в книге прошлось мне по вкусу. В некоторых моментах изложение довольно замороченное. Юмор автора тоже не даёт расслабиться, в итоге отдельные темы мне пришлось перечитывать несколько раз, а порой и ходить за альтернативным объяснением в интернет. Но тут я многое списываю на культурную и возрастную разницу (не первый раз натыкаюсь на такой стиль изложения).

Итого:
+: Структура, примеры и дискуссии
+: Наглядно от и до
+: Содержит все основы
+: Где использовать и какие существуют ограничения техники
+/-: Изложение местами оставляет желать лучшего
=: Отличная книга, которую стоит читать всем программистам. Я жалею, что не наткнулся на эту книгу всего пару лет назад.

Название: Test Driven Development: By Example
Авторы: Kent Beck
Обложка: