为什么底层基础库也要解耦

这里的底层库指的是网络库、图片库、日志库、APM 库等等。

底层库之间往往也是互相依赖的,比如图片库很有可能要依赖网络库。很多同学(包括我之前)可能都有一种误解,觉得底层库之间的依赖无所谓, 反正都是基础库,捆绑在一起视为一个总的库就可以了。

这句话本身没啥大问题,但在实际开发中,以下两种情况可能会放大底层库互相依赖的缺点。

  1. 基础库仍处于开发中:实际上很少有基础库是稳定不动的,即使是大家觉得相对成熟稳定的功能,也有深挖的余地。比如网络库支持 QUIC 协议、弱网优化等等。除非是某些技术实力不强,但历史比较久的应用,否则不断优化、实现新的技术标准是不可避免的。
  2. 基础库由各个团队分别维护。在某些航母级应用,比如手淘、美团中可能有专门的团队负责基础库的开发,人数可能达到三十人甚至更多。但如果某个公司有多个明星产品,并无典型的航母级应用,那么很常见的情况是每个产品承担公司内某几个技术项目的开发。此时基础库变成了多个团队分别维护。

耦合过多的问题在于,一旦被依赖的库发生了改变,那么依赖于它的库也要改变。假设基础库 A 被基础库 B1、B2……B10 依赖,那么当 A 发生接口变动时,十个依赖它的基础库都要跟着改动。

top Created with Sketch.