有关Invariant
概念(notion)
invariant,中文意思是不变性。是软件构造中ADT相关的一个概念。不变量的意思就是在程序的任何阶段都不会改变的一个抽象的性质举例说明,immutability就是程序中一个典型的不变量。(Immutability is one crucial invariant: once created, an immutable object should always represent the same value, for its entire lifetime)
不变量是由ADT来维护的,所以不依赖于任何的客户端的使用限制,即无论用户第几次使用,怎么使用,这些量的数值都不会发生任何的改变。
不变性是ADT应该具有的最重要性质之一.
“The most important property of a good abstract data type is that it preserves its own invariants.”
为什么要引入和维护不变性
不变性便于我们在使用时做出基本的假设。比如string数据类型,当我们在其周围发现bug的时候,我们不会去深入观察其内部是否出现了问题,因为其保证了不可变这一不变性,我们也相信这一不变性。所以我们就可以肯定不会出现我改了一处,其他变量和模块会连带的变动。当我们自己实现ADT的时候,如果我们无法保证这些不变性,那么我们就无法为使用它的人提供任何保障和假设的依据。