什么时候应该使用C#4.0附带的代码合同?

时间:2010-12-09 04:22:01

标签: c# c#-4.0 code-contracts

我正在经历一个关于SO的问题,关于new features of c# 4.0和jon双向飞碟的答案有C#4.0的Code Contracts功能..但我真的不明白何时使用它们..任何建议......

2 个答案:

答案 0 :(得分:25)

尽可能。例如,在

之类的方法开头使用guard子句的任何地方
public void Write(TextWriter tw, object o) {
    if(tw == null) {
        throw new ArgumentNullException("tw");
    }
    if(o == null) {
        throw new ArgumentNullException("o");
    }
    tw.WriteLine(o.ToString());
}

你应该改为使用

public void Write(TextWriter tw, object o) {
    Contract.Requires(tw != null);
    Contract.Requires(o != null);
    tw.WriteLine(o.ToString());
}

Contract的美妙之处在于它们是公开的,并且可以成为文档的一部分,而不需要额外的工作,因为保护条款不公开,只能放入文档中。吊装。因此,使用Contract,您可以更清楚地表达代码中的要求和承诺。

答案 1 :(得分:5)

合同的真正美妙之处在于你不必硬连接那些丑陋的参数名字串......

if(tw == null) throw new ArgumentNullException("tw");