Книга: Экстремальное программирование. Разработка через тестирование
Как методика TDD связана с шаблонами?
Как методика TDD связана с шаблонами?
Все мои технические публикации – это поиск фундаментальных правил, которые позволяют обычным людям действовать так, как действуют эксперты. Это связано с тем, как я сам осваиваю то или иное ремесло, – я нахожу эксперта, которому можно подражать, и постепенно выясняю, что, собственно, он делает. Определенно, я не предполагаю, что сформулированные мною правила должны использоваться автоматически, однако именно так и происходит.
Моя старшая дочь (привет, Бетани! Я же говорил тебе, что ты попадешь в мою книгу, – не беспокойся, это не слишком обременительно) в течение семи лет пыталась научиться быстро перемножать числа. Как я, так и моя жена, когда были маленькими, научились этому за значительно более короткий срок. В чем дело? Оказывается каждый раз, когда перед Бетани вставала задача умножить, например, 6 на 9, она складывала число 6 девять раз (или число 9 шесть раз). Таким образом, можно сказать, что Бетани вообще не умела умножать числа так, как это делают другие люди, однако при этом она необычайно быстро складывала числа.
Я обратил внимание на один важный эффект, который, я надеюсь, смогут принять во внимание и другие. Если на основе постоянно повторяющихся действий формулируются правила, дальнейшее применение этих правил становится неосознанным и автоматическим. Естественно, ведь это проще, чем обдумывать все «за» и все «против» того или иного действия с самого начала. Благодаря этому повышается скорость работы, и, если в дальнейшем вы сталкиваетесь с исключением или проблемой, которая не вписывается ни в какие правила, у вас появляется дополнительное время и энергия для того, чтобы в полной мере применить свои творческие способности.
Именно это произошло со мной, когда я писал книгу Smalltalk Best Practice Patterns. В какой-то момент я решил просто следовать правилам, описываемым в ней. В начале это несколько замедлило скорость моей работы – мне требовалось дополнительное время, чтобы вспомнить то или иное правило или написать новое. Однако по прошествии недели я заметил, что с моих пальцев почти мгновенно слетает код, над разработкой которого ранее мне приходилось некоторое время размышлять. Благодаря этому у меня появилось дополнительное время для анализа и важных размышлений о дизайне.
Существует еще одна связь между TDD и шаблонами: TDD является методом реализации дизайна, основанного на шаблонах. Предположим, что в определенном месте разрабатываемой системы мы хотим реализовать шаблон «Стратегия» (Strategy). Мы пишем тест для первого варианта и реализуем его, создав метод. После этого мы намеренно пишем тест для второго варианта, ожидая, что на стадии рефакторинга мы придем к шаблону «Стратегия» (Strategy). Мы с Робертом Мартином занимались исследованием подобного стиля TDD. Проблема состоит в том, что дизайн продолжает вас удивлять. Идеи, которые на первый взгляд кажутся вам вполне уместными, позже оказываются неправильными. Поэтому я не рекомендую целиком и полностью доверять своим предчувствиям относительно шаблонов. Лучше думайте о том, что, по-вашему, должна делать система, позвольте дизайну оформиться так, как это необходимо.
- Насколько большими должны быть шаги?
- Что не подлежит тестированию?
- Как определить качество тестов?
- Как TDD способствует созданию инфраструктур?
- Сколько должно быть тестов?
- Когда следует удалять тесты?
- Как язык программирования и среда разработки влияют на TDD?
- Можно ли использовать TDD для разработки крупномасштабных систем?
- Можно ли осуществлять разработку через тестирование на уровне приложения?
- Как перейти к использованию TDD в середине работы над проектом?
- Для кого предназначена методика TDD?
- Зависит ли эффективность TDD от начальных условий?
- Как методика TDD связана с шаблонами?
- Почему TDD работает?
- Что означает название?
- Как методика TDD связана с практиками экстремального программирования?
- Нерешенные проблемы TDD
- Пользуйтесь шаблонами
- Как язык программирования и среда разработки влияют на TDD?
- 4.2. Методика выявления способов воздействия на информацию
- Приложение 3. Методика проведения опроса клиентов
- Методика оценки эффективности рекламного текста
- Чем TDD не является
- Возврат на инвестиции в маркетинг – методика принятия управленческих решений
- 5.9. МЕТОДИКА РАЗРАБОТКИ АЛГОРИТМОВ ПРОГРАММ
- Методика трех утверждений
- 11.2. Методика «Круг аргументации»
- 11.3. Методика «Сравнительный анализ с конкурентами». Приемы № 151–153
- 3.1. Методика определения состава защищаемой информации