ACP*_*ACP 19 c# code-contracts c#-4.0
我正在经历一个关于SO的问题,这是关于c#4.0的新功能和jon双向飞碟的答案有C#4.0的Code Contracts功能..但我真的不明白何时使用它们..任何建议......
jas*_*son 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());
}
Run Code Online (Sandbox Code Playgroud)
你应该改用
public void Write(TextWriter tw, object o) {
Contract.Requires(tw != null);
Contract.Requires(o != null);
tw.WriteLine(o.ToString());
}
Run Code Online (Sandbox Code Playgroud)
令人高兴的是Contract,它们变得公开并且可以成为文档的一部分,而不需要额外的工作,因为保护条款不公开,只能通过一些繁重的工作进入文档.因此,Contract您可以更清楚地表达代码中的要求和承诺.
小智 5
合同的真正美妙之处在于你不必硬连接那些丑陋的参数名称字符串......
if(tw == null) throw new ArgumentNullException("tw");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |