Предполагалось, что Брэду необходимо создать систему биллинга по подписке, которая будет запускать периодические биллинги, а также обновлять записи о клиентах - используя C # и xUnit.net (среду тестирования Брэда, созданную им с Джимом Ньюкирком). Для многих это звучит просто. Для тех, кто реализовал такую вещь - это все что угодно.
Что мне действительно очень понравилось в этом эпизоде, так это то, что я толкнул Брэда ровно настолько, чтобы удалить «демонстрационную фанеру» - я дал ему около 30 минут, когда я сказал: «О да… я уже говорил, что мы также делаем X ?» - и он должен был приспособиться.
Когда у вас есть куча тестов, которые предполагают одно, то вы должны перейти к другому - это боль в заднице. Но Брэд справился с этим на удивление хорошо - воспользовавшись возможностью, чтобы придать больше структуры процессу тестирования, а затем один за другим «перевести» свои старые тесты в новый подход.
Мы работали целый час внутри одного файла кода - и я никогда не видел, чтобы кто-нибудь делал это раньше. Конечно, я создал класс прямо внутри кода - но смотрел, как Брэд раскручивает класс за классом, затем переименовывает, затем удаляет, а затем полностью реструктурирует свои тесты ... это было очень, очень интересно.
Они всегда говорят, что TDD - это «процесс проектирования» - но я никогда не видел, чтобы он использовался по-настоящему «дизайн-у» - как художник может подбрасывать цвет за цветом на холсте, пока он не будет выглядеть / чувствовать себя как надо. И это именно то, что он чувствовал, наблюдая за ним.
Примерно через 15 минут Брэд упоминает, что «я оставляю класс в тестовом файле до тех пор, пока он не будет готов к публикации», что означает, что у него достаточно тестов, чтобы оправдать свои дизайнерские решения. Концепция, о которой я никогда раньше не задумывался - вроде как использовать тестовый файл как «чрево».
Он «ощутил» свой путь через создание биллинговой системы - все время разговаривал сам с собой и создавал что-то довольно интересное и чертовски близкое к тому, что мы получили после трех лет жизни.