
4.3
像熵一样的状态
|
95
4.3
像熵一样的状态
熵
(
entropy
)可以被定义为对无序性或不可预测性的一种度量。系统中的
熵越大,系统就越无序和不可预测。程序的状态与熵非常类似。不论讨论
的是全局应用状态、用户会话状态,还是给定用户会话下特定组件实例的
状态,当我们尝试理解程序的流程、程序如何到达现在所处的状态、现在
的状态如何决定以及帮助预测流程的执行等问题时,我们在应用中创建的
每一个状态,都是一个需要考虑的新维度。
在这一节,我们将讨论消除和包装状态的方法,还有不可变性。首先,我
们讨论当前状态是由什么组成的。
4.3.1
复杂的当前状态
状态的问题是,随着应用变大,状态也跟着变大,因此大型应用总是复杂
得令人绝望。这种复杂性存在于整体中,但不一定存在于在单个部分中。
这就是为什么将应用分解为更小的组件后,即使整体复杂性增加,局部复
杂性也可以减少。也就是说,将单个大函数分解为一堆小函数,可能使整
个应用变得更加复杂,因为那些小函数的数量会有原来
10
倍之多。但是,
这样做也让大函数之前的各部分功能现在由小函数覆盖,当我们关注它们
的时候,会变得更简单。如此一来,不需要对整个系统有全面或大范围的
了解,也可以很容易地维护一个大型复杂系统的各个部分。
从本质上说,状态都是可变的。即使变量绑定本身是不可变的,总的来看
状态仍是可变的。一个函数可能每次都会返回不同的对象,我们甚至可以
让这个对象不可变,这样对象自身就不能变化。但是,每次使用这个函数
都会接收一个不同的对象。不同的对象意味着不同的引用,意味着状态作 ...