在理解解耦之前,我们先来理解耦合度。耦合度是软件工程领域的概念,是指模块之间的依赖程度。

这里的模块可以小到一个小功能,也可以大到一个系统。

那么对应的,解耦就是解除模块之间的耦合关系。

降低模块之间的依赖程度也可以理解为解耦, 模块之间有依赖关系就必然存在耦合 ,

0耦合是基本无可能的,那是最理想的状态。

耦合度越低,模块之间依赖的程度越低,模块的 独立性 、 复用性 和 可移植性 就越强。

那么如何判断2个有关联的模块的耦合程度呢?

1)是否有牵一发而动全身的现象?

一个小的改动,会影响到依赖它的所有模块,这是耦合度高的典型表现。

比如A模块和B模块都依赖于C模块,当A模块有特殊需求,要求C模块支持时,C模块没法改造,C模块一改造会影响到接入它的所有模块。

2)看模块的复用性

可复用性越高,说明耦合度越低

3)看模块的可移植性

可移植性越高,说明耦合度越低

我们还应该牢记两点:

产品是业务和商业的载体,产品设计时一定要考虑业务场景。不同的业务场景是有边界的,不同领域要解耦合处理,这样后续才能避免产生技术负债。所以你看,有足够的业务领域知识的基础上,更要学会对业务领域解耦合,这才是设计好产品的关键。

其实,对于软件开发来说,产品经理是关键的源头角色,我们应该有敬畏之心,事实上,只有当我们掌握了足够多的知识,有了领域和边界的思维之后,才能从源头避免技术负债的产生。

这一切,可能都要求我们在具体的产品设计时要有优秀的产品思维,要具备解耦合的意识和结构化的能力,当然,最关键的是一定要有边界理念和破界勇气。

所谓的破界,不是破外在现实的边界,而是破内在认知的边界。

正如古人所言:小知不及大知,认知无止境。