Загрузка...
Экстремальное программирование. Разработка через тестирование — обложка книги
Краткое содержание, анализ и герои

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

Автор П. Анджан
12+198 читателей
Дата написания2002-12-31
ИздательствоПитер
ISBN978-5-496-02570-6
Язык книгиru
Язык оригиналаen
СерияБиблиотека программиста (Питер)
Возрастное ограничение12+
Темы
тестированиеискусство программированияразработка программного обеспечениятестирование программного обеспечения

Описание

Книга демонстрирует применение тест‑приведённой разработки (TDD) на примере системы денежных операций, раскрывая как писать тесты до кода, как рефакторить, как использовать шаблоны проектирования и как масштабировать подход к большим проектам.

Главный конфликт / проблема

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

Ключевые идеи

  • Тесты пишутся до кода и служат спецификацией
  • Цикл Red‑Green‑Refactor обеспечивает быстрый прогресс
  • Value Object – неизменяемые объекты с equals и hashCode
  • Наследование и суперкласс Money упрощают общий код
  • Сравнение объектов должно учитывать тип и значение
  • Тест‑ориентированная разработка как средство выявления и устранения дублирования.
  • Абстрагирование конкретных валют в общий класс Money и удаление подклассов.
  • Введение интерфейса Expression и класса Sum для поддержки сложения и умножения.
  • Bank как единственный источник курсов обмена, использующий полиморфизм.
  • Тесты должны быть быстрыми, изолированными и независимыми.
  • Принцип Arrange‑Act‑Assert (3A) упрощает структуру тестов.
  • Методы setUp и tearDown обеспечивают подготовку и очистку среды.

Вывод

Тест‑приведённая разработка, сочетанная с грамотным применением шаблонов проектирования и последовательным рефакторингом, приводит к созданию надёжных, гибких и легко поддерживаемых программных систем.

Кому полезна

  • Software developers
  • QA engineers
  • Agile teams
  • Students of software engineering

Главные темы

  • Test‑Driven Development (TDD)
  • Design patterns in TDD
  • Refactoring
  • Testing frameworks and patterns
  • Large‑scale TDD application

Персонажи

  • Анджан П. — Автор книги, объясняет применение шаблонов проектирования в TDD, приводит практические примеры и рекомендации.
  • Kent Beck — Показывает процесс TDD, приводит примеры и объясняет принципы.
  • Bob Martin — Обсуждает влияние TDD на парное программирование и частую интеграцию.
  • Jim Newkirk — Показывает, как запускать тесты при каждой новой версии пакета.
  • Tim Makinon — Показывает, как смена партнёра может привести к перезапуску кода.
  • Peter Hansen — Показывает, как простая реализация может выявить ошибки в тесте.
  • Richard Gabriel — Предлагает оставить последний тест неработающим, чтобы быстро продолжить работу.
  • Erich Gamma — Участвует в обсуждении применения шаблонов, например, в JHotDraw.
  • Bob Binder — Приводит пример большого количества тестов для треугольника.
  • Money — Содержит общее поле amount и метод equals, объединяет общие части Dollar и Franc.
  • Dollar — Объект-значение, реализует умножение и equals, представляет доллар.
  • Franc — Похож на Dollar, но представляет франки, реализует умножение и equals.

Цитаты

  • "Чистый код, который работает, – это цель, к которой стоит стремиться"
  • "Red – Green – Refactor – это мантра TDD."
  • Мы можем сделать их еще более похожими, изменив тип возвращаемого значения на Money:
  • В итоге достигается система, где Money, Sum и Bank работают через интерфейс Expression, а операции плюс и умножение возвращают Expression.
  • Тесты должны выполняться достаточно быстро, чтобы я мог запускать их самостоятельно и делать это достаточно часто.
  • Тесты должны полностью игнорировать друг друга.
  • «чистый код, который работает»
  • «Если вы знаете, что писать, и если это получится достаточно быстро, то смело пишите готовый код»
  • Если исходить из этого предположения, то можно найти (и мы действительно находим) общие проблемы со стандартными решениями.
  • В рамках TDD рефакторинг используется интересным образом.

Вам также может понравиться