所有的编程哲学都是关于状态的 | worldofbs


我最近意识到所有不同的编程哲学都与状态有关,并且可以归结为关于如何使用状态的简单陈述:

面向对象
一次性修改大量的状态是很难正确的;因此:将状态的子集封装成独立的对象,并允许通过方法对封装的子状态进行有限的操作。

函数式编程
修改状态很难得到正确的;因此:保持在边界,保持逻辑纯净,这样更容易验证逻辑是否正确。

声明式编程
修改状态很难正确;因此:使用一种语言来描述应该如何操纵状态,并让机器确定所需的步骤。

命令式编程
修改状态很难正确;因此:尽量减少计算机操作方式和代码编写方式之间的概念层数。

单体Monolith
修改分布在许多服务中的状态很难得到正确的;因此:保持集中。

SOA面向服务的架构
修改一项服务中的所有状态很难得到正确的;因此:将其分发到多个服务中。

微服务
修改服务中的任何状态都很难正确;因此:有许多主要是无状态的服务。

这表明,每一种编程哲学都是关于如何管理状态的,而每一种哲学都是有取舍的。这意味着没有处理状态的 "唯一正确的方法",每一种编程哲学在正确的领域都是有用和重要的。它还显示了最小化状态是多么重要。