45

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

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI2MzYwNDEwMw%3D%3D&%3Bmid=2247484314&%3Bidx=1&%3Bsn=53110644f85d9ee136ee393a727610c8
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

UJbYnuU.png!mobile

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

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

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

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

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

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

反过来说呢,是这样的。

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

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

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

jeUBbee.png!mobile

图来自网络

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK