Contract.Requires против Contract.Require - PullRequest
8 голосов
/ 23 апреля 2011

Я заметил, что Microsoft назвала свои функции, связанные с контрактом кода, в .NET 4 странным образом.

Они добавляют «s» в конце «require» и «sure», так что естьContract.Requires () и Contract.Ensures (), но не в конце «assert» и «предположить», поэтому есть Contract.Assert () и Contract.Assume ().Разница меня немного смущает.

На самом деле, моя настоящая проблема в том, что я пытаюсь использовать код-контракт в PHP, поэтому я пишу что-то для имитации класса "Контракт" в .NET 4. Так какВ PHP нет встроенного метода для проверки типа параметров, я добавляю метод в свой собственный класс Contract для некоторой проверки.Я выбираю слово «ожидать», потому что я думаю, что «ожидаю, что параметр 'bar' будет строкой, но ...» - это обычное сообщение, когда тип параметра неверен.И тут возникает проблема.Должен ли я назвать свой метод Contract.Expect () или я должен назвать его Contract.Expected ()?

Я из неанглоговорящей страны, так что извините за мой плохой английский.Может быть, это на самом деле вопрос на английском языке, но я думаю, что только программисты могут мне помочь.Так что извините за это, если этот вопрос не является правильным здесь.

1 Ответ

15 голосов
/ 23 апреля 2011

Я полагаю, Ensures и Requires описывают, какие методы требуют и / или гарантируют , тогда как Assert и Assume являются командами для верификатора контракта .

Или, другими словами, первые два описывают предварительные условия / постусловия о внешнем интерфейсе метода , в то время как последние два являются просто метаданными, чтобы помочь контролеру контракта выполнить свою работу за вас внутриметод .Один относится к пользователю, а другой нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...