我注意到微软在.NET 4中以一种奇怪的方式命名了它们的代码契约相关函数。
他们在“要求”和“确保”的末尾加上"s“,所以有Contract.Requires()和Contract.Ensures(),而不是在”断言“和”假设“的末尾,所以有Contract.Assert()和Contract.Assume()。这种差别让我有点困惑。
事实上,我真正的问题是,我正在尝试在.NET 4中使用代码契约,所以我编写了一些类似于在PHP4中的" Contract“类,因为PHP没有内建方法来验证参数的类型,所以我在我自己的契约类中添加了一个方法来进行一些验证。我选择"expect“这个词,因为我认为"expect参数'bar‘是字符串,但是.”是参数类型错误时的常见消息。问题就来了。是将方法命名为Contract.Expect()还是命名为Contract.Expects()?
我来自一个非英语国家,很抱歉我的英语很差。也许这实际上是一个英语问题,但我认为只有程序员才能帮助我。很抱歉,如果这个问题在这里不合适的话。
发布于 2011-04-23 08:25:19
我相信Ensures和Requires正在描述什么方法需要和/或保证,而Assert和Assume是契约验证器的命令。
换句话说,前两个描述方法外部接口的先决条件/后置条件,而后两个仅仅是元数据,以帮助契约验证器在方法中为您完成其工作。一个与用户相关,而另一个与用户无关。
https://stackoverflow.com/questions/5762966
复制相似问题