在理解解耦之前,我们先来理解耦合度。耦合度是软件工程领域的概念,是指模块之间的依赖程度。
这里的模块可以小到一个小功能,也可以大到一个系统。
那么对应的,解耦就是解除模块之间的耦合关系。
降低模块之间的依赖程度也可以理解为解耦, 模块之间有依赖关系就必然存在耦合 ,
0耦合是基本无可能的,那是最理想的状态。
耦合度越低,模块之间依赖的程度越低,模块的 独立性 、 复用性 和 可移植性 就越强。
那么如何判断2个有关联的模块的耦合程度呢?
1)是否有牵一发而动全身的现象?
一个小的改动,会影响到依赖它的所有模块,这是耦合度高的典型表现。
比如A模块和B模块都依赖于C模块,当A模块有特殊需求,要求C模块支持时,C模块没法改造,C模块一改造会影响到接入它的所有模块。
2)看模块的复用性
可复用性越高,说明耦合度越低
3)看模块的可移植性
可移植性越高,说明耦合度越低
我们还应该牢记两点:
产品是业务和商业的载体,产品设计时一定要考虑业务场景。不同的业务场景是有边界的,不同领域要解耦合处理,这样后续才能避免产生技术负债。所以你看,有足够的业务领域知识的基础上,更要学会对业务领域解耦合,这才是设计好产品的关键。
其实,对于软件开发来说,产品经理是关键的源头角色,我们应该有敬畏之心,事实上,只有当我们掌握了足够多的知识,有了领域和边界的思维之后,才能从源头避免技术负债的产生。
这一切,可能都要求我们在具体的产品设计时要有优秀的产品思维,要具备解耦合的意识和结构化的能力,当然,最关键的是一定要有边界理念和破界勇气。
所谓的破界,不是破外在现实的边界,而是破内在认知的边界。
正如古人所言:小知不及大知,认知无止境。