9

我今天阅读了有关 C# 4.0 代码合同的信息。似乎验证方法的参数不是 null 的常见做法如下:

Contract.Requires(p != null);

但是,对我来说,我必须为代码中每个接口方法的每个参数都这样做似乎很不合理。在绝大多数情况下,参数不应为空。我希望会有某种机制允许定义某些特定参数“允许”为空(类似于 Java 中的“@Nullable”注释),并且合同框架将自动确保其余的不是无效的。

除了在这种“样板检查”(以及许多“合同类”上节省大量时间,因为很多时候除了非空参数之外根本没有任何条件需要验证)之外,它还将使合同代码更清晰并且更“面向逻辑”。

我的问题是,有没有办法做到这一点,如果没有,哪里没有,或者为什么我的方法在这里是错误的?

4

1 回答 1

0

我不同意,当您需要检查某些内容是否尚未初始化或未找到数据时,null 非常有用,有时您希望将 null 传递给方法并且它很好,代码合同很好对于服务于许多类的常用方法,以及 api 定义。如果您在分层架构中编写,您只需要保护层之间的交互,并且您在每一层内都是空安全的。

您的域得到了空值,并且没问题。

于 2013-03-18T07:15:58.293 回答