Что делают Check.Assert (), Check.Ensure () и Check.Require ()? - PullRequest
4 голосов
/ 12 августа 2010

Пожалуйста, скажите мне, что делают эти функции.

Ответы [ 3 ]

5 голосов
/ 12 августа 2010

Это основанные на фреймворке не зависящие от языка методы определения контрактов кода в .NET. Хотя некоторые языки, такие как spec # и Delphi Prism, имеют первоклассную языковую поддержку для контрактов кода, этот основанный на фреймворке подход делает его доступным для всех языков .NET. IronRuby, IronPython, F #, VB.NET и т. Д.

Require () - это проверка уровня метода в ENTRY, Ensure () - проверка уровня метода в EXIT, а Assert () - проверка в любой точке, где она вызывается. То есть, в какой бы точке выполнения эти методы ни применялись, условие, которое вы им передаете, будет оценено. Если это условие не выполняется, возникает ошибка.

2 голосов
/ 12 августа 2010

Я гуглил ваш заголовок и нашел следующее:

http://www.codeproject.com/KB/cs/designbycontract.aspx

По сути, это методы, которые помогают вам писать код с использованиемметодология «Проектирование по контракту».

0 голосов
/ 12 августа 2010

В дополнение к тому, что говорили другие, контракты также можно проверять во время компиляции, если вы используете более дорогие версии Visual Studio. Таким образом, вы можете доказать, что, например, аргумент никогда не является нулевым в вашей программе. Это также означает, что проверка будет ненужной, и компилятор C # сможет ее оптимизировать.

Эти проверки времени компиляции могут быть очень полезны, если у вас очень высокие требования к качеству и относительно небольшая и узкая кодовая база.

...