Java 计算机术语中的前置条件、后置条件和不变量有什么区别
我正在读这本书,对这些术语感到有点困惑:Java 计算机术语中的前置条件、后置条件和不变量有什么区别,java,concurrency,uml,invariants,Java,Concurrency,Uml,Invariants,我正在读这本书,对这些术语感到有点困惑: 前提条件 后置条件 不变量 有人能给我解释一下吗(如果可能的话,请举个例子)?如果你不能理解这些简单的想法,你在编写Java时会遇到很多问题,尤其是多线程代码: 前置条件是在调用方法之前必须为真的东西。该方法告诉客户“这就是我对你的期望” 后置条件是在方法完成后必须为真的东西。这种方法告诉客户“这就是我承诺为你做的” 不变量是永远真实且不会改变的事物。该方法告诉客户“如果在你打电话给我之前这是真的,我保证在我打完电话后这仍然是真的” 它们都是“合同编程”
有人能给我解释一下吗(如果可能的话,请举个例子)?如果你不能理解这些简单的想法,你在编写Java时会遇到很多问题,尤其是多线程代码:
我的观点是正确的-谢谢你,弗拉明彭昆。我已经更新了我的答案。为了帮助您发布更合适的问题,请提出一些具体的问题,这些问题可以显示您对该主题的研究/工作,为您的问题增加价值。你们可以发现在互联网上讨论的事情一般来说并不能成为好问题。附言:我自己也没有否决你。这有点苛刻……这个问题怎么会模棱两可呢?他希望通过一个代码示例来澄清这些术语的含义。他展示了研究,因为他正在读那本该死的书。有时候,我只是磨碎齿轮。Ugh.还假设当BDD中的单元测试和给定是实际使用前置条件的示例,而Assert&BDD Then子句是后置条件的示例。那么,当我编写带有特定前置条件的方法时,我是否会检查这些前置条件是否得到满足,还是我要假设客户足够聪明,不会违反先决条件?这是你的选择,但整个想法是为了验证和防止错误。问问自己,消费者是如何知道你的合同的。