vlambda博客
学习文章列表

一文一点 | 康威定律和单一职责原则的关系

你好,这是【一文一点】的第4篇文章,不拘泥于篇幅字数,用一篇文章说清一个知识点。

 

康威定律,也有反康威定律,我们结合这两个一起来说说。

 

我曾经有段时间都理解成,反康威定律就是反对康威定律的意思了,那么,显然不是这样。

 

这里的反,是反过来说的意思。

 

康威定律是在1968年由Melvin Conway提出来的,并且以他的名字命名,基本意思呢,是这样的。

 

“公司的沟通方式和组织结构决定了系统的架构”

 

反过来说呢,是这样的。

 

“产品或系统的架构决定了公司的组织结构”

 

康威定律和反康威定律都是成立的。

 

根据已知的资料,如果把各大知名公司的组织结构画出来,他们看起来跟产品的架构很像。

 

             

图来自网络

 

 

我们在学习SOLID设计原则的时候,有一个原则可以称得上是首要原则,那就是单一职责原则(SRP),也就是SOLID五个原则的第一个字母所对应的原则。

 

这个原则跟康威定律有什么关系呢,Robert C.Martin 说过,单一职责原则是康威定律的一个演化,这个该如何理解呢。

 

那我们要先看SRP的定义,SRP的定义几经迭代,最终被Robert C.Martin在《架构整洁之道》中定义为:任何一个软件模块都应该只对某一类行为者负责。

 

这里面的一类行为者,就是指一个或多个有共同需求的人。

 

这样不就跟康威定律所描述的,“公司的沟通方式和组织结构决定了系统的架构”里面的组织对应上了么,这里面的组织就是指的“某一类行为者”

 

如果我们所设计出来的系统架构不能够跟组织结构对应上,就可能会带来不利的地方。

 

比如,你设计了一个类,这个类的行为包含了两拨“一类行为者”,那么他们分别来提需求的时候,不就是都要在这个类里面去改变了么。