Кому читать: всем программистам, которые работают не только со своим кодом, но и с чужим.
Пара слов об авторе: Майкл Физерс - основатель и ген. директор компании по разработке ПО "R7K Research & Conveyance". Ведет любопытную страничку в Твиттере.
О чем книга:
Хочешь облагородить код, который ты не писал, и протестировать его, но боишься сделать еще хуже? Эта книга для тебя.
Книга основана на семинарах для разработчиков, технических руководителей, тестировщиков ПО и специалистов, приводящие в порядок непослушные унаследованные системы. Автор пишет о том, как работать с крупными базами унаследованного нетестированного кода.
Ты узнаешь, как грамотно протестировать код, выявить ошибки, провести рефакторинг. После того, как ты "причешешь код", установишь некий стандарт качества и метрику для изменений, можешь со спокойной душой и чистой совестью продолжить работу с унаследованным кодом.
Физерс подробно описывает частые ошибки и ловушки, в которые попадают тестировщики, и предлагает рецепты их устранения. Он добавляет ясности в то, что такое модульный тест и что он должен делать, и в процессе рассказывает, как выглядит хороший объектно-ориентированный код глазами тестировщика.
Также автор дает полезные советы о том, как создавать слабосвязанный код, как идентифицировать и устранять зависимости в существующем коде, а также стратегии реорганизации плохо структурированного кода в более совершенные объекты.
Отзывы знакомых программистов:
"Книга освещает много технических аспектов, но надо учитывать, что некоторые вещи (особенно в давно существующих в компаниях) просто не могут быть исправлены простыми смертным. Иногда надо уметь расслабиться и получать удовольствие от безысходности."
"В этой книге есть несколько полезных советов, но в целом - речь идет о написании собственного фреймворка xUnit. Если хочешь узнать, как лучше реорганизовать код и улучшить его читабельность и ремонтопригодность - эта книга не очень поможет."
"Эта книга явно изменила к лучшему мой способ программирования и мои представления о тестировании. Речь идет не только о тестировании, но и о превращении процедурного кода в объектно-ориентированный код и выводе объектно-ориентированного мышления на новый уровень."