我一直在阅读按合同设计的帖子和示例,有些东西我似乎无法理解。在我看到的所有示例中,DbC 都用于在后置条件(例如大量银行账户)中测试其自身状态的普通类。
在我看来,大多数时候当你调用一个类的方法时,它会做更多的工作,将方法调用委托给它的外部依赖项。我了解如何在具有特定场景的单元测试中使用依赖反转和模拟对象来检查这一点,这些对象专注于方法的外部行为,但是这如何与 DbC 和后置条件一起工作?
我的第二个问题必须处理理解复杂的后置条件。在我看来,要为许多函数写出一个后置条件,你基本上必须为你的后置条件重新编写函数体,才能知道新状态将是什么。那有什么意义呢?
我真的很喜欢 DbC 的概念,并且我认为它有很大的希望,特别是如果我能够在找到经过验证的合同后弄清楚如何重现某些失败状态。在过去的几个小时里,我一直在阅读一些简洁的东西。Eiffel 中的自动测试生成。我目前正在尝试改进我在 C++ 开发中的流程,但如果我能弄清楚如何不失去我在当前项目中取得的所有基础,我愿意学习新的东西。谢谢。