news 2026/4/22 4:06:04

Part 10|我给这套系统划的第一个边界

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Part 10|我给这套系统划的第一个边界

在决定从业务边界开始拆系统之后,我很快遇到了一个非常具体的问题。

这个问题不是“模块怎么拆”,
而是:

某些逻辑,到底该不该跨过模块边界?

这个问题如果不先想清楚,
后面的设计会非常难受。


一、这个问题,是在商品和订单之间出现的

在设计商品和订单相关逻辑时,我一开始是犹豫的。

比如:

  • 下单时,是否直接操作商品库存
  • 商品是否需要感知订单状态
  • 订单取消后,库存回滚该由谁负责

这些问题,从功能角度看都说得通

如果只是为了把流程跑通,
让订单模块“顺手”去操作商品模块,
是最省事的。

但我很快意识到一个风险:

一旦这么做,商品和订单的职责就会开始混在一起。


二、我意识到:这是一个必须先立边界的地方

如果让订单模块:

  • 直接修改商品的库存状态
  • 直接依赖商品内部结构

那意味着一件事:

订单模块开始对“商品内部实现”负责了。

这在当前阶段可能没问题,
但我很清楚后面会发生什么:

  • 库存规则会变
  • 商品形态会变
  • 下单方式也会变

一旦订单对商品内部有了改动,
后面任何变化,都会牵一发动全身。


三、我给自己立下的第一条“不能越过”的边界

正是在这个地方,我给系统立下了第一条硬边界:

一个模块,只能依赖另一个模块“公开承诺的接口结果”,
不能依赖它的内部过程。

落到这个例子里,就是:

  • 订单只关心“库存是否可用”这个结果
  • 商品内部如何判断、如何扣减,是商品自己的事
  • 订单处理不应预设商品的库存管理方式

这条边界一旦立住,
很多“顺手的实现”就必须被放弃。


四、这条边界让我放弃了不少“省事”的做法

比如:

  • 不在订单里直接写库存扣减逻辑
  • 不让订单感知商品的内部状态字段
  • 不让商品去反向感知订单流程细节

这些做法在短期内,确实会让实现更麻烦一点。

但它换来的是:

  • 商品规则调整时,订单不用跟着改
  • 订单流程变化时,不会反向调整商品
  • 出问题时,责任边界非常清楚

五、为什么我把这条边界看得这么重

回头看,我之所以把它当成第一条不能越过的边界,原因很简单:

这是我第一次在设计阶段,就明确拒绝了“省事实现”。

如果在这个地方妥协,
后面类似的跨边界需求只会越来越多。

而这条边界一旦立住,
后面的设计反而变得轻松了:

  • 我知道哪些事情可以谈
  • 哪些事情一开始就不该谈

写在最后

我给这套系统划的第一条“不能越过”的边界,
并不是抽象原则,而是一个非常具体的决定:

订单不能依赖商品的内部实现,
商品也不能被订单流程牵着走。

这条边界看起来很普通,
但如果一开始没立住,
后面整个系统都会被它反复拉扯。

也正是从这一刻开始,
我才真正意识到:
系统设计里的边界,往往不是画出来的,
而是在具体场景里,被逼着做出来的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 14:13:22

Part 11|模块划分并非越细越好,关键在于明确职责边界

在明确要从业务边界开始拆系统之后,我很快遇到了一个新的现实问题:业务边界清楚了,但模块到底要拆到什么程度?一开始,我其实很容易走向一个极端: 既然要清晰,那就尽量拆细一点。 但真正把模块往…

作者头像 李华
网站建设 2026/4/20 14:10:03

设计模式之-观察者模式

1.先来看一个简单的例子 // 观察者 class Observer {update(data){// 观察者收到数据变化,自行处理要做的事情console.log(接收到了数据:--,data);} } // 目标 class Subject {constructor(){// 维护所有的观察者列表this.observers [];}add(ob){// 添…

作者头像 李华
网站建设 2026/4/20 19:27:02

单北斗GNSS在桥梁形变监测与维护中的应用与优势分析

本文旨在深度分析单北斗GNSS在桥梁形变监测与维护中的应用与优势。首先,单北斗GNSS厂家提供的各类产品,如变形监测一体机和传感器,具备独特的技术特性,能够满足不同桥梁监测需求。其次,监测系统的定制与实施方法&#…

作者头像 李华
网站建设 2026/4/19 10:22:48

Arbess从基础到实践(16) - 集成GitHub实现Java项目构建并自动化Docker部署

Arbess 是一款国产开源免费的 CI/CD 工具,支持免费自动化部署,一键安装零配置。本文将详细介绍如何安装并使用ArbessGitHub实现Docker项目自动化构建部署 1、GitHub 配置 本章节将介绍如何创建GitHub个人访问令牌,提供给Arbess克隆源码。 …

作者头像 李华
网站建设 2026/4/20 9:27:18

基于Python的健身房管理系统源码设计与文档

前言在健身房精细化运营需求提升、传统管理模式存在 “会员管理混乱、课程预约低效、数据统计滞后、私教跟进缺位” 的痛点背景下,基于 Python 的健身房管理系统构建具有重要的商业与实用价值:从会员管理层面,系统依托 Python 的数据库交互能…

作者头像 李华
网站建设 2026/4/20 0:46:24

NVIDIA HGX™ B300 GPU Droplet 服务器,即将上线DigitalOcean 云平台!

人工智能正以史无前例的速度演进,新的模型和繁重的负载不断突破可能的边界。从复杂的大型语言模型(LLM)到精密的科学模拟,开发者与企业都需要获得最强大、最高效的算力基础设施。在 DigitalOcean,我们致力于提供顶级的…

作者头像 李华