Вопрос, который я хочу задать вам, довольно широк, но в то же время он очень конкретный. Во-первых, я должен сказать, что меня больше всего интересуют ответы, которые применимы в среде .net.
Ну, я хочу увеличить уровень кода, который я создаю. Теперь я в основном использую TDD и статический анализ кода, чтобы убедиться, что мой код верен. Недавно я слушал речь Дино Эспозито о кодовых контрактах, и теперь я хочу использовать ее в сочетании с другими методами. Слушая Дино, я также вспомнил Debug.Assert()
и Trace.Assert()
.
Чтобы быть конкретным, я задам несколько вопросов:
- Как мне написать контракты и модульные тесты, чтобы они дополняли друг друга?
- Должен ли я использовать кодовые контракты в каждом методе или только в общедоступных методах?
- Должен ли я предотвратить использование
Debug.Assert()
? Когда это ОК, чтобы использовать их? (Например, обратите внимание, что инварианты в .net проверяются только на выходе public method/property. Итак, можно ли сделать некоторые проверки в середине метода простымAssert()
?) - Не могли бы вы порекомендовать мне проект с открытым исходным кодом, в котором все эти методы будут правильно использоваться, потому что картинка рисует тысячу слов?