我喜欢偶尔看看.NET库,并收集一些关于我应该如何做事的见解。我的意思是那些人是专家,我随时准备学习。但我对这两种方法感到有点困惑:
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
private static String[] InternalReadAllLines(String path, Encoding encoding)
{
Contract.Requires(path != null);
Contract.Requires(encoding != null);
Contract.Requires(path.Length != 0);
.
.
.
}
[System.Security.SecuritySafeCritical]
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static IEnumerable<String> ReadLines(String path, Encoding encoding)
{
if (path == null)
throw new ArgumentNullException("path");
if (encoding == null)
throw new ArgumentNullException("encoding");
if (path.Length == 0)
throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
Contract.EndContractBlock();
.
.
.
}
所以我看到这种方法可以确保参数设置为Contract.Requires(...)
,非常简洁。然后另一个方法有一堆if
语句后跟一个Contract.EndContractBlock()
。 BLOCK不意味着有一个起点吗?
任何人都知道不同的开发者在不同的时间点是出于某些特定原因设计的差异还是不同的编码标准?
注意:虽然这与另一个问题的路线相同,但并不完全相同。