Ответ
Да, я читал "Test-Driven Development by Example" Кента Бека. Это фундаментальная работа, которая сформировала мой подход к разработке. Я применяю цикл "красный-зелёный-рефакторинг" в ежедневной работе.
Практический пример из моего опыта (на PHP с PHPUnit):
-
Красная фаза: Пишу минимальный тест для новой функциональности.
// tests/CalculatorTest.php public function testItAddsTwoNumbers(): void { $calculator = new Calculator(); $this->assertEquals(5, $calculator->add(2, 3)); }Запускаю тест — он падает, так как класса или метода ещё не существует.
-
Зелёная фаза: Пишу минимальную реализацию, чтобы тест прошёл.
// src/Calculator.php class Calculator { public function add(int $a, int $b): int { return $a + $b; } }Теперь тест проходит.
-
Рефакторинг: Улучшаю код, сохраняя зелёный статус тестов.
// Добавляю проверку на переполнение или расширяю функциональность, предварительно написав новый тест.
Книга научила меня мыслить через интерфейсы и контракты, которые диктуют тесты, что в итоге приводит к более чистому и слабо связанному дизайну. Для современных PHP-проектов я комбинирую эти принципы с использованием таких инструментов, как PHPUnit для модульных тестов и Behat для поведенческих.