从分而治之的思想到架构的设计
辛巴当上了国王,他究竟要怎样才能管理好它的王国? 分治与总量控制 在上一篇文章里,我们得到两个信息: 人类大脑的信息实时处理能力存在上限 软件系统的复杂度远超人类大脑的复杂度处理上限 从而引出了人类解决大规模复杂问题的根本方法 分而治之 然而分而治之的需要基于一个前提进行 复杂度总量控制 因为绝大多数人类参与的问题中,分而治之都会引入额外的汇总求解成本。要尽量减少复杂度,有两个方面的思想层次的指导: 子问题在人类可控范围内尽量的大 每个子问题要高内聚,问题间要低耦合 子问题在人类可控范围内尽量大,则有助于减少子问题数量,因而减少合并处理子问题的成本。同时子问题不超过一个人处理能力的上限是因为,一旦超过一个人的能力范围,要多人合作解决同一个平面上问题的不同部分时,必然会因合作之间沟通等原因降低整体开发效率(1 + 1 < 2) 高内聚、低耦合是一体,但从不同角度描述的理念。高内聚,即所需完成的事情所需的资源在内部通过较少的代价即可取得,低耦合则是指代 输出给外部、或者从外部输入的资源尽可能的小。 在存在关联的子问题中,耦合并不可能消除。耦合这个词可能大多数程序员听起来有有点不好的意味,但耦合存在另外一个中性的名字——接口。所以,产生了一个接口就产生了一个耦合,接口参数越多,耦合就越强。 以上是对之前文章的回顾,本文后续将基于个人理解,讲述 分治的隔离级别,如何识别要拆分的点