弱前置条件和强后置条件问题?

Weak precondition and strong postcondition problems?

上次考试有题,没能理智回答

问题是“弱前提可能会引起什么问题?

另一个问题是“强后置条件可能会引起什么问题?

如何着手回答这个问题?我试图解释被评估为真值的弱前置条件,可能不足以暗示将强后置条件设为真,但似乎还不够。

我想知道,这个问题的正式答案是什么,实际上是两个简短的问题。

"弱前提会带来什么问题?" “强后置条件会产生什么问题?”

弱前置条件和强后置条件都使规范更强。过于强大的规范会降低规范(接口)实施者的灵活性。这导致更复杂和更昂贵的实现。此外,并非所有客户甚至可能都需要强度,因此复杂性和费用可能会浪费掉。

作为一个简单的例子,一个规范可能承诺return一个排序的结果列表。这会阻止实现使用有效的表示形式,例如哈希 table,并且客户端甚至可能不需要对结果进行排序。

引文:幻灯片来自 http://courses.cs.washington.edu/courses/cse331/ .