gpt4 book ai didi

.net - 契约(Contract)要求与契约(Contract)要求

转载 作者:行者123 更新时间:2023-12-04 05:42:55 27 4
gpt4 key购买 nike

我注意到微软在 .NET 4 中以一种奇怪的方式命名了他们的代码契约(Contract)相关函数。

他们在“require”和“ensure”的末尾添加“s”,所以有Contract.Requires()和Contract.Ensures(),但没有在“assert”和“assume”的末尾,所以有Contract .Assert() 和 Contract.Assume()。这种差异让我有点困惑。

事实上,我真正的问题是,我正在尝试在 PHP 中使用代码契约(Contract),所以我写了一些东西来模仿 .NET 4 中的“契约(Contract)”类。由于 PHP 没有内置方法来验证参数的类型,我在自己的 Contract 类中添加了一个方法来进行一些验证。我选择“expect”这个词,因为我认为“expect parameter 'bar' to be string but...”是参数类型错误时的常见消息。问题来了。我应该将我的方法命名为 Contract.Expect() 还是应该命名为 Contract.Expects()?

我来自一个非英语国家,很抱歉我的英语不好。
可能它实际上是一个英语问题,但我认为只有程序员才能帮助我。很抱歉,如果这个问题在这里不合适。

最佳答案

我相信EnsuresRequires正在描述需要和/或保证哪些方法,而 AssertAssume是对合约验证者的命令。

或者换句话说,前两个描述了方法外部接口(interface)的前置条件/​​后置条件,而后两个只是元数据,帮助合约验证者在方法内部为你完成工作。一个与用户相关,而另一个与用户无关。

关于.net - 契约(Contract)要求与契约(Contract)要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com