其实确实有很多可以细究的细节,我们先来看他的详细的过程——
这里其实可以说,比较两个规约的步骤是这样的两步——
第一步是比较两个规约的前置条件,至于如何比较就看他们的集合大小。
第二步是比较两个规约的后置条件,重中之重是必须要注意到,如果S1的前置条件弱于S2,那么就应该在S2的前置条件的条件下比较后置条件!!这个小的细节说明了很多东西,因为规约的强弱实质上是为了判断一个实现能否在另一个实现的情境下完全的替代他,所以我们需要考虑那个弱的实现的情景,至于强的前置条件多出来的那一部分永远不会在弱的实现中出现,所以我们不需要考虑!!
听起来这个细节很容易,很简单,实质上至少从我个人来讲,会经常忘记,尤其是,极易把前置条件和后置条件当成两个独立的条件分别去判断,根据以上的分析,这个做法是从根本上错误的。