您是否专业使用Design by Contract?这是您从项目一开始就要做的事情,还是可以改变方向并开始将其融入您的软件开发生命周期?您发现什么是设计方法的优缺点?
我在研究生课程中遇到了" 按合同设计"的方法.在学术环境中,它似乎是一种非常有用的技术.但我目前不专业地使用Design by Contract,而且我不知道任何其他开发人员正在使用它.听听SO群众的实际使用情况会很好.
我不能高度推荐它.如果你有一个采用内联文档合同规范的套件,那就特别好了,如下所示:
// @returns null iff x = 0 public foo(int x) { ... }
并将它们转换为生成的单元测试,如下所示:
public test_foo_returns_null_iff_x_equals_0() { assertNull foo(0); }
这样,您实际上可以看到正在运行的测试,但它们是自动生成的.顺便说一句,生成的测试不应该检查到源代码管理中.
当您在必须相互通信的应用程序之间建立接口时,您真的可以通过合同来欣赏设计.
如果没有合同,这种情况很快就会成为一场责怪网球比赛.团队不断来回敲响指控,浪费了大量时间.
有了合同,责任很明显.
调用者是否满足前提条件?如果不是,客户团队需要修复它.
鉴于有效请求,接收器是否满足后期条件?如果不是,服务器团队需要修复它.
双方是否都遵守合同,但结果不理想?合同不足,问题需要升级.
为此,您不需要以断言的形式实现合同,您只需确保所有各方都记录并达成一致.