Сообщений 15 Оценка 118 [+1/-0] Оценить |
Изящный, гибкий и понятный код, который легко модифицировать, который корректно работает и который не подкидывает своим создателям неприятных сюрпризов. Неужели подобное возможно? Чтобы достичь цели, попробуйте тестировать программу еще до того, как она написана. Именно такая парадоксальная идея положена в основу методики TDD (Test-Driven-Development - разработка, основанная на тестировании). Бессмыслица? Не спешите делать скороспелых выводов! Рассматривая применение TDD на примере разработки реального программного кода, автор демонстрирует простоту и мощь этой новой методики. В книге рассматриваются два программных проекта, целиком и полностью реализованных с использованием TDD. За рассмотрением примеров следует обширный каталог приемов работы в стиле TDD, а также паттернов и рефакторингов, имеющих отношение к TDD. Книга будет полезна для любого программиста, желающего повысить производительность своей работы и получить удовольствие от программирования.
Предисловие
Благодарности
Введение
Часть I. На примере денег
Часть II. На примере xUnit
Часть III. Паттерны для разработки через тестирование
Послесловие
Приложение I. Диаграммы взаимовлияния
Приложение II. Фибоначчи
Алфавитный указатель
Когда я читал первые книги по экстремальному программированию, то не мог отделаться от мысли, что это - очередная "беллетристика" о технологии создания ПО. То, что программировать (и вообще выполнять практически любую умственную деятельность) в паре значительно эффективнее, я знал давно ("Одна голова - хорошо, а две - лучше" - это мы все знаем). Остальные положения экстремального программирования тоже не казались откровениями. Однако один принцип XP не давал мне покоя: я никак не мог сообразить (думаю, и многие другие программисты тоже), как же это сначала писать тесты, а потом уже код? Как я напишу тест, если еще не знаю, что, собственно, тестировать?! И вот наконец-то я получил исчерпывающий ответ в книге Кента Бека "ХР. Разработка через тестирование". В книге описана методика Test-Driven Development (TDD) - разработка посредством тестов.
"Чистый код, который работает, - в этой короткой фразе кроется весь смысл методики TDD. Чистый код, который работает, - это цель, к которому стоит стремиться" - так начинается эта книга. Благие намерения - это, конечно, здорово, но мы знаем, куда они обычно заводят. В этой книге благие намерения оказались подкреплены совершенно конкретными делами - изложением такой нужной программистам методики. Она основана на применении xUnit. Однако мне не показалось, что без этого методику нельзя применять. После прочтения первой части у меня сложилось стойкое убеждение, что и без xUnit можно делать все то же самое. Судите сами - в рамках TDD нужно выполнять всего два простых правила:
В первой части очень подробно, со всеми рассуждениями и принятыми решениями, описан процесс доработки некоей системы, оперирующей одной валютой, до мультивалютного варианта. Примеры даны на Java, но это не особенно напрягает, поскольку шаги настолько элементарны, что конкретный код занимает не более 5 строчек. С++-программист все легко понимает.
Во второй части Кент Бек применяет тот же процесс для разработки xUnit. Мне уже давно не давало покоя практически полное отсутствие автоматизированных инструментов для тестирования. Первый раз я наткнулся на упоминание о JUnit при прочтении "Рефакторинга". И тут такой подарок - описание разработки от автора! После прочтения этой главы у меня возникло стойкое желание САМОМУ для себя написать CppUnit. Знаю, знаю, что уже написано. Однако процесс описан Кентом Беком столь увлекательно, что в буквальном смысле "вводит во искушение". Почитайте книгу - я уверен, что с вами случиться то же самое. Когда я писал эту рецензию, я поймал себя на том, что следую методике TDD:
С легкой руки "Банды четырех", мы теперь все приемы разработки (от проектирования до тестирования) можем называть паттернами. То же делает и Кент Бек. Третья часть представляет начальный каталог паттернов разработки через тестирование. Автор сюда еще добавил "кусочек" каталога паттернов рефакторинга и "кусочек" каталога паттернов "Банды четырех". Это сделано просто для того, чтобы читатель понял взаимосвязь всех паттернов.
Собственные впечатления. Если кто помнит, раньше разработки велись методом "снизу-вверх". Потом придумали "сверху-вниз", потом еще много чего, основное из которого (ИМХО) объектно-ориентированный подход и UML. Я преподавал студентам технологию программирования и постоянно сталкивался с одной проблемой: как научить студента на практике применять все эти прекрасные методики, методы, методологии. Даже не научить, а заставить - как известно, студенты сначала пишут программу, а потом уже проект под нее. Все студенческие проекты - это разработки "для себя". По собственному опыту знаю, что в работе "для себя" непреодолимо хочется писать программу, а не чертить диаграммы UML. Теперь у меня есть прекрасная возможность учить студентов естественной технологии разработки. Кент Бек описал метод "снизу-вверх" в объектно-ориентированной постановке. Конечно, если система большая, то это не избавляет нас от необходимости иметь хотя бы черновой проект всей системы, однако любую часть ее мы можем начинать писать по методике TDD. И при этом будем совершенно уверены, что все будет работать, так как двигаемся мы мелкими шагами и на каждом шаге имеем работающий код. "Серебряная пуля" найдена? Конечно, нет - в последней главе Кент Бек пишет об ограничениях применимости методики TDD.
Выводы. Эта книжка, наряду с "Рефакторингом" и "Паттернами", должна обязательно быть под рукой у программиста при ЛЮБОЙ разработке. По соотношению "стоимость-производительность" (программиста) ей нет равных.
Сообщений 15 Оценка 118 [+1/-0] Оценить |