一文一点 | 康威定律和单一职责原则的关系
你好,这是【一文一点】的第4篇文章,不拘泥于篇幅字数,用一篇文章说清一个知识点。
康威定律,也有反康威定律,我们结合这两个一起来说说。
我曾经有段时间都理解成,反康威定律就是反对康威定律的意思了,那么,显然不是这样。
这里的反,是反过来说的意思。
康威定律是在1968年由Melvin Conway提出来的,并且以他的名字命名,基本意思呢,是这样的。
“公司的沟通方式和组织结构决定了系统的架构”
反过来说呢,是这样的。
“产品或系统的架构决定了公司的组织结构”
康威定律和反康威定律都是成立的。
根据已知的资料,如果把各大知名公司的组织结构画出来,他们看起来跟产品的架构很像。
图来自网络
我们在学习SOLID设计原则的时候,有一个原则可以称得上是首要原则,那就是单一职责原则(SRP),也就是SOLID五个原则的第一个字母所对应的原则。
这个原则跟康威定律有什么关系呢,Robert C.Martin 说过,单一职责原则是康威定律的一个演化,这个该如何理解呢。
那我们要先看SRP的定义,SRP的定义几经迭代,最终被Robert C.Martin在《架构整洁之道》中定义为:任何一个软件模块都应该只对某一类行为者负责。
这里面的一类行为者,就是指一个或多个有共同需求的人。
这样不就跟康威定律所描述的,“公司的沟通方式和组织结构决定了系统的架构”里面的组织对应上了么,这里面的组织就是指的“某一类行为者”
如果我们所设计出来的系统架构不能够跟组织结构对应上,就可能会带来不利的地方。
比如,你设计了一个类,这个类的行为包含了两拨“一类行为者”,那么他们分别来提需求的时候,不就是都要在这个类里面去改变了么。