程序员的底层思维
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.1 概念要明确且清晰

对概念的明晰和定义是我们设计过程中的重要内容。在一个领域内,如果一个系统的核心概念的定义出现了问题,可能会给上层的业务带来毁灭性的打击。

此前我们在做社区团购业务的时候,由于系统是从盒马交接过来的,而在之前的系统中并没对商品、货品这两个重要概念进行区分,导致后续出现了领域边界不清、团队职责不清、系统修改困难等一系列问题。

例如,我负责的商品系统对外会被供应链、仓库物流消费使用。作为商业的基本要素,商品被外部系统依赖本来也是正常的,只是原来的系统并没有清晰地明确商品和货品的概念,导致商品系统在承载商品管理职责的同时,还承载了货品的职责。管理的是商品,发布的是商品,采购的是商品,销售的是商品,仓内扫码作业还是商品。这种不区分上下文地使用“商品”这个概念,导致商品就像洪水一样以一种模糊的方式泛滥到各个系统中。

比如,仓库的扫码作业依赖商品系统去找到条码和货品的关系。这种不合理的依赖关系,以及商品和货品概念的耦合,导致商品系统非常脆弱。仓内扫码作业经常会出现条码正确,但背后的货品信息出不来的问题,进而导致在面对新的业务场景时,系统不能“正确”地提供支撑。为了让业务可以继续下去,技术人员不得已在错误的模型基础上采用了各种补丁办法,导致系统的复杂度呈指数级上升。

在深入理解了系统的关联关系后,我发现了“货品”概念的缺失。当我把这个概念显性化出来之后,整个系统的边界关系、底层模型之间的关联关系也明朗了起来,如图2-2所示。

图2-2 概念不清引起的领域边界问题