Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Бек К. -> "Экстремальное программирование: разработка через тестирование " -> 77

Экстремальное программирование: разработка через тестирование - Бек К.

Бек К. Экстремальное программирование: разработка через тестирование — СПб.: Питер, 2003. — 224 c.
ISBN 5-8046-0051-6
Скачать (прямая ссылка): bek-k..pdf
Предыдущая << 1 .. 71 72 73 74 75 76 < 77 > 78 79 80 .. 81 >> Следующая


• не существует способа автоматического тестирования GUI (например,

Swing, CGI, JSP/Seivlets/Struts);

• не существует способа автоматического тестирования распределенных объектов (например, RPC, Messaging, C0RBA/EJB и JMS);

• TDD нельзя использовать для разработки схемы базы данных (например, JDB С);

• нет необходимости тестировать код, разработанный сторонними разработчиками, или код, генерируемый внешними инструментами автоматизации разработки;

• TDD нельзя использовать для разработки компилятора/интерпретатора языка программирования.

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

Послесловие

Мартин Фаулер (Martin Fowler)

Когда рассказываешь о разработке, основанной на тестировании, сложнее всего передать то психическое состояние, в котором ты находишься, когда работаешь в стиле TDD. Я помню, как в ходе проекта СЗ мы с Ральфом Битти (Ralph Beat-tie) работали над реализацией сложного набора условий выплаты. Ральф сформулировал набор соответствующих тестов, после чего мы приступили к реализации этих тестов одного за другим. Процесс был равномерным и неторопливым, из-за этого казалось, что мы работаем медленно. Однако, взглянув назад на проделанную работу, можно было понять, что, несмотря на кажущуюся неторопливость, мы работали очень даже быстро.

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

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

Добавление новой функциональности при помощи тестов и рефакторинг — это две монологические разновидности программирования. Совсем недавно я открыл еще одну разновидность: копирование паттерна. Я занимался разработкой сценария на языке Ruby, выполняющего извлечение информации из базы данных. Я начал с создания класса, являющегося оболочкой таблицы базы данных, а затем сказал себе, что раз я только что закончил книгу о паттернах работы с базами данных, я должен использовать паттерн. Примеры программ в книге были написаны на Java, поэтому нужный мне код легко можно было перенести на Ruby. Когда я программировал, я не думал о решении проблемы, я думал лишь о том, каким образом лучше всего адаптировать паттерн для условий, в рамках которых я работал.

Копирование паттернов само по себе не является хорошим программированием, — я всегда подчеркиваю этот факт, когда говорю о паттернах. Любой паттерн — это полуфабрикат, — вы должны адаптировать его для условий своего проекта. Однако чтобы сделать это, лучше всего вначале, особо не задумываясь, скопировать паттерн, а затем, воспользовавшись смесью рефакторинга и TDD1 выполнить адаптацию. В этом случае в процессе копирования паттерна вы также концентрируетесь только на одной вещи — на паттерне.

Сообщество XP интенсивно работает над тем, чтобы добавить в общую картину паттерны. Со всей очевидностью можно сказать, что сообщество XP любит паттерны. В конце концов, между множеством приверженцев XP и множеством приверженцев паттернов существует значительное пересечение: Уорд и Кент являются лидерами обоих направлений. Наверное, копирование паттерна — это третий монологический режим программирования наряду с разработкой в стиле «тесты вначале» и рефакторингом. Как и первые два режима, копирование паттерна — опасная штука, если ее использовать отдельно от двух других режимов. Все три вида программирования проявляют свою мощь только тогда, когда используются совместно друг с другом.

Если вы хотите сделать некоторый процесс эффективным, вы должны идентифицировать основные действия, из которых состоит процесс, а затем добиться того, чтобы в каждый момент времени внимание концентрировалось только на одном таком действии. Примером такого подхода является сборочная линия, в рамках которой каждый рабочий выполняет только одну из множества необходимых процедур. Внимание каждого рабочего сконцентрировано только на одном действии. Методика разработки, основанной на тестировании (TDD), подразумевает разделение процесса программирования на элементарные режимы, однако при этом она избавляет нас от монотонности, предлагая быстро переключаться между этими режимами. Комбинация монологических режимов и переключения между ними обеспечивает должную концентрацию внимания, снижает стресс и избавляет нас от монотонности сборочной линии.
Предыдущая << 1 .. 71 72 73 74 75 76 < 77 > 78 79 80 .. 81 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100