我正在玩 Pex 和 Moles,在运行 Pex 后发现 Pex 所说的几乎所有失败的测试都是因为 NullReferenceExceptions 是“允许的”。阅读 Pex 文档,我发现了以下内容:
如果较高级别的组件将格式错误的数据传递给较低级别的组件,而较低级别的组件拒绝了该组件,则应首先阻止较高级别的组件这样做。
所以上面的建议是我们应该在调用其他方法/类之前测试空值,例如:
if(foo == null)
throw new ArgumentNullException("its null and this shouldn't happen")
else
Bar(foo); //won't get a null reference exception here because we checked first...
恕我直言,全面检查空值对性能和代码膨胀的原因并没有太大吸引力,但我想听听其他人怎么说....