gpt4 book ai didi

design-by-contract - 按契约(Contract)设计的最佳实践是什么

转载 作者:行者123 更新时间:2023-12-04 07:54:53 26 4
gpt4 key购买 nike

按契约(Contract)设计的最佳实践是什么?

在大学里,我通过契约(Contract)范式学习了设计
(在OO环境中)
我们已经学习了三种解决问题的方法:

1)全面编程:涵盖其所有可能的异常(exception)情况
效果(参见数学)

2)标称编程:仅在满足前提条件时“ promise ”正确的效果。 (否则效果不确定)

3)防御性编程:使用异常来表示对方法的非法调用

现在,我们将重点放在不同的OO场景上,以了解每种情况下的正确用法,但还没有了解何时使用WHICH ...
(大多数情况下,练习是在战术上执行的。)

现在我觉得我没有问过老师是非常奇怪的(但是再一次,在听课时,没有人问过)

就我个人而言,我现在从不使用标称值,而是倾向于用异常(exception)条件替换前提条件(因此,我宁愿使用:抛出IllegalDivisionByZero,而不是声明“前提条件:除法器应不同于零),并且仅编程合计才有意义(因此我不会返回a常规值除以零),但此方法仅基于个人发现和喜欢的事物。

所以我问你们:

有什么最好的做法吗?

最佳答案

我不知道这个部门,也不能真正反射(reflect)我的经验。

完全编程实际上是不可能的。您不能保证可以涵盖所有异常(exception)情况。因此,基本上,您应该限制范围并拒绝超出范围的情况(这是前提条件的作用)

名义上不需要。未定义的效果应被禁止。

防御性编程是必须的。您应该始终发出非法调用方法的信号。

我赞成完整的按契约(Contract)设计元素的实现,在我看来,这是“全面编程”的实用且易于理解的版本

前提条件(一种防御性编程)用于发出非法调用该方法的信号。尽量限制范围,以便简化代码。如果可能,请通过缩小范围来避免复杂的实现。

后置条件,如果未获得所需的效果,则会引发错误。即使是您的错,也应该通知调用者您错过了目标。

不变以检查是否保留了对象一致性。

关于design-by-contract - 按契约(Contract)设计的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745136/

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