Я бы полностью принял контракты, как в блогах предварительного просмотра, и читая более длинный документ в формате pdf.
Контракты предназначены не только для публичных функций.Большое дело в том, что он предоставляет компилятору возможность рассуждать о коде.Так что используйте его во всех ваших функциях в зависимости от ситуации.Это дает вам максимальную выгоду.Только использовать его в публичных функциях - все равно что сказать, что вы тестируете только функции верхнего уровня.Это неправильно.
Ваши функциональные тестовые сценарии могут уничтожить любую логику, которая все еще нуждается в тестировании в функции после того, как пре / пост-контрактные и инвариантные вызовы контракта сделают свое дело.
Понятно о 3 сценариях использования, который работает для вашего кода, и его проблемы.В идеале вы можете запустить их в своем производственном коде, а затем уменьшить масштаб на основе тестирования производительности.
Убедитесь, что ваши сгенерированные документы содержат ваши контракты, и это хорошая выгода.
Мне также нравитсяDevExpress CodeRush и Refactor!Про инструменты.У них есть особые рефакторинги для контрактов, такие как пара кликов, чтобы превратить входные параметры в требуемые контракты и т. Д. Кроме того, у них есть хороший анализ кода, который повысит качество вашего кода в целом.
Вы можете посмотреть на некоторый кодс Контрактами здесь: https://searchcode.com/codesearch/view/14318515/
Что касается всей энчилада наилучшей практики, все в одном проекте.Ну, я смотрю на тебя, Microsoft.Tsk.
Хенк справился с остальными вашими вопросами.