
我认为代码示例值得一千字:
public bool CrushGodzilla(string weapon,int veLocity) { Contract.Requires(weapon != null); // long code return false; } public bool CrushGodzilla(string weapon) { Contract.Requires(weapon != null); // specify contract requirement here // as well??? return this.CrushGodzilla(weapon,int.MaxValue); } 对于运行时检查,这并不重要,因为我们最终总是会遇到需求检查,如果失败,我们会收到错误.
但是,当我们再次在第二次重载中未指定合同要求时,是否认为是不良做法?
此外,还将编译时间检查功能,也可能设计代码合同的时间检查.它似乎尚未在Visual Studio 2010中使用C#,但我认为有一些语言,如Spec#已经做了.当我们编写代码来调用这样的方法时,这些引擎可能会给我们提示,我们的参数当前可以是或将为null.
所以我想知道这些引擎是否会始终分析一个调用堆栈,直到找到一个当前不满足的合同的方法?
此外,here I learned about the difference between Contract.Requires(...) and Contract.Assume(...).我想这个差异也是在这个问题的背景下考虑的呢?
请注意,如果您在整个项目中使用C#4,您可以考虑使用可选参数和命名参数来避免这么多重载.如果您需要从不支持这些语言的语言调用代码,那就没有用.
我强烈怀疑,如果您没有在“默认”超载中指定合同,则静态检查器(现在为available for all versions of VS2010)将抱怨合同可能会失败,并且还会建议在其中添加合同.
总结以上是内存溢出为你收集整理的c# – 代码合同:我们必须在委托方法中冗余地指定Contract.Requires(…)语句?全部内容,希望文章能够帮你解决c# – 代码合同:我们必须在委托方法中冗余地指定Contract.Requires(…)语句?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)