дизайн приложения среднего размера при выполнении TDD? [закрыто]

Я хорошо разбираюсь в модульном тестировании, DI, макетах и всех основных достоинствах дизайна, необходимых для того, чтобы иметь максимально полное покрытие кода (насколько это возможно) (принципал единой ответственности, подумайте 'как мне это проверить? как я кодирую и т.д ...).

Мое самое последнее приложение, я не кодировал, делая настоящий TDD. Я запомнил юнит-тестирование при написании кода и написал свои тесты после написания кода, рефакторинга и т. Д. Я сделал TDD, когда это было 'легко' чтобы сделать ... однако я не так хорошо разбирался, как сейчас ... Это был первый проект, в котором я полностью использовал DI, фреймворк и т. д., и первый, в котором было полное покрытие кода - и я Я многому научился у него, пока я шел. Я'Мне не терпится попасть в мой следующий проект, чтобы я мог полностью закодировать его, используя TDD с нуля.

Я знаю, что это широкий вопрос, и яя уже заказал TDD примером и XP Unleashed, но яЯ надеюсь на краткий обзор того, как вы все разрабатываете / пишете большое приложение, выполняющее TDD.

Вы пишете все приложение, не используя ничего, кроме заглушенного кода? (например, написать все сигнатуры функций, интерфейсы, структуры и написать все приложение, но без написания какой-либо реальной реализации)? Я мог бы представить, что это работает на малых и средних размерах, но возможно ли это даже в больших приложениях?

Если нет, то как, черт возьми, вы бы написали свой первый модульный тест для функции высшего уровня в вашей системе?? Скажем, например - в веб-сервисе, где у вас есть функция DoSomethingComplicated (param1, ..., param6), доступная миру. Очевидно, что написание теста сначала для простой функции, такой как AddNumbers (), тривиально - но когда функция находится на вершине стека вызовов, такого как эта?

Вы все еще занимаетесь дизайном заранее?? Очевидно, вы все еще хотите сделатьархитектура' дизайн - например, блок-схема, показывающая, как IE общается с IIS, который общается с Windows-службой через WCF, который общается с базой данных SQL ... ERD, который показывает все ваши таблицы SQL и их поля и т. д. ... но как насчет дизайна класса ? Взаимодействия между классами и т. Д.? Вы разрабатываете это заранее или просто продолжаете писать код заглушки, реорганизуя взаимодействия по мере продвижения, пока все не соединится и не будет похоже, что оно будет работать?

Любой совет высоко ценится

Ответы на вопрос(4)

Ваш ответ на вопрос