计算机术语中的前提条件,后条件和不变量有什么区别[已关闭]

2022-09-01 03:09:34

我正在阅读Java并发实践中的书,并对以下术语有点困惑:

  1. 前提条件
  2. 岗位条件
  3. 不变量

有人可以向我解释一下吗(如果可能的话,用一个例子)?


答案 1

如果你不能理解这些简单的想法,你会在编写Java时遇到很多问题,尤其是多线程代码:

  1. 前提条件是在调用方法之前必须为真的事情。该方法告诉客户“这是我对你的期望”。
  2. 后置条件是方法完成后必须为真的事情。该方法告诉客户“这是我承诺为你做的”。
  3. 不变量是始终是正确的,不会改变的东西。该方法告诉客户“如果在你打电话给我之前这是真的,我保证当我完成时它仍然是正确的”。

它们都是一个名为“合同编程”的想法的一部分。它是由一个名叫C.A.R. Hoare的人发明的。Bertrand Meyer围绕它构建了一种名为Eiffel的面向对象语言。没有人经常使用它,但他因此在阳光下度过了一天。

埃菲尔铁塔不是很受欢迎。在我写这篇文章的时候,SO有超过四百万个问题,但其中只有32个问题被标记为“eiffel”。

更新:2016年6月29日,关于SO的问题有11,966,392个问题。其中只有92个被标记为“埃菲尔铁塔”。埃菲尔铁塔问题的百分比大致保持在~0.00077%。

我站着纠正 - 谢谢你,火焰企鹅。我已经更新了我的答案。


答案 2

推荐