美文网首页
程序员修炼~不变式

程序员修炼~不变式

作者: 心水 | 来源:发表于2022-02-17 22:36 被阅读0次

    今天黎叔问了一个问题:

    不变式和后置条件有什么区别?

    就喜欢老板这样喜欢思考的,没有思考就没有理解,一起来看定义:

    前置条件:为调用这个例程,必须为真的是什么?例程的需求。一个例程永远
    不应该在前置条件被违反的时候被调用。传递良好的数据是调用者的责任。

    后置条件:例程保证要做的是什么?例程完成时世界的状态。例程有后置条件这个事实,意味着能得出这样的结论——不允许无限循环。

    类的不变式:从调用者的角度来看,类会确保该条件始终为真。在例程的内部处理期间,可以不遵守不变式,但是当例程退出并将控制权返回给调用者时,不变式必须为真。(注意,一个类不能给参与不变式的任何数据成员不受限制的写访问权限。)

    仔细又看了一遍,感觉确实和后置条件的区别不大,如果硬要说区别,后置条件侧重的是契约要实现的目的或功能,不变式侧重的是契约不能产生的副作用(某些条件不能更改)

    再来看一个包含不变式的定义:

    一定不要把固定的、不可违背的需求,与那些仅仅可能是随着新管理层上任而改变的策略相混淆。这就是我们使用语义不变式这个术语的原因——它必须是事物意义的核心,而不受策略的影响(策略用于更动
    态的业务规则)。

    感觉不变式侧重的是不可违背的需求,而后置条件更像是会时间变化的业务规则。以POS机上的查询余额为例,不变式是指用户不管怎么查询,账户里面的钱不会增加也不会减少,这是不可违背的需求。

    而账号余额要以什么样的形式展现出来就更像是后置条件了,当然我们也可以说不变式是一种特殊的后置条件,只是侧重点不同罢了。

    相关文章

      网友评论

          本文标题:程序员修炼~不变式

          本文链接:https://www.haomeiwen.com/subject/uchelrtx.html