gpt4 book ai didi

c# - 编写代码契约(Contract)而不是直接检查逻辑代码有好处吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:11 25 4
gpt4 key购买 nike

我们正在构建业务应用程序而不是 API 供其他人使用,在这种情况下,我更喜欢在 if/then/throw 模型中使用我们的验证逻辑。有人告诉我,最好使用代码契约(Contract)。我没有看到任何好处,是否有任何我没有看到的明显好处?我看到使用代码契约的问题,因为它是静态方法调用,并且在编译阶段之后发生了一些代码注入(inject)。谢谢

最佳答案

有两个明显的好处:

(1) 代码更易读。

 Contract.Requires(someParam != null && someParam.SomeValue != 0);

对比

if (someParam != null && someParam.SomeValue != 0)
throw new ArgumentNullException("someParam", someParam, "someParam can't be null and someParam.SomeValue can't be zero.");

此外,借助代码契约,谓词代码会自动放入失败消息中,因此您无需像处理正常异常时那样编写显式消息。

(2) 您可以对代码运行代码契约静态分析,它可以为您查找错误。

还有一些不太明显的好处:

(3) 您可以在 XML 文档文件中为代码契约(Contract)生成文档。

(4) 您可以使用Contract.Ensures() 来表达后置条件约束。这使您可以避免很多代码,例如 if (item.Property1 != null && item.Property1.Property2 != null) ... 因为您会知道 PropertyProperty2 可以为空。

(5) 代码合约形成一个明显独立于其余代码的 block 。

关于c# - 编写代码契约(Contract)而不是直接检查逻辑代码有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com