Для тех, кто не читал Code Complete 2, процесс программирования псевдокода - это, в основном, способ разработки процедуры, описывая ее на простом английском языке, а затем постепенно пересматривает ее до более подробного псевдокода и, наконец, кодировать. Главное преимущество этого заключается в том, чтобы помочь вам оставаться на правильном уровне абстракции, строя системы сверху вниз, а не снизу вверх, тем самым развивая чистый API в отдельных слоях. Я нахожу, что TDD менее эффективен в этом, потому что он слишком сильно фокусируется на минимальном минимуме, чтобы пройти тест, и поощряет небольшой предварительный дизайн. Я также считаю, что необходимость поддерживать набор модульных тестов для нестабильного кода (код, который постоянно реорганизуется) довольно сложна, потому что обычно бывает, что у вас есть дюжина модульных тестов для процедуры, которая нужна только один или два раза. Когда вы делаете рефакторинг - например, меняете подпись метода - большая часть вашей работы заключается в обновлении тестов, а не в коде prod. Я предпочитаю добавлять модульные тесты после того, как компонентный код немного стабилизировался.
Мой вопрос - тех, кто пробовал оба подхода, которые вы предпочитаете?