02-通用语言与协作-DDD领域驱动设计


title: "02 通用语言与协作"


学习目标

  • 理解通用语言(Ubiquitous Language)的作用:消除"人脑翻译"
  • 能建立最小可用的词汇表,并把它映射到代码命名
  • 知道如何在模型演化时同步更新语言与代码

核心概念

通用语言(Ubiquitous Language)

通用语言是围绕模型建立的共同语言,要求团队在:

  • 讨论、文档、图
  • 代码中的类名、方法名、事件名、命令名

都尽量使用同一套词汇与定义。

课堂讲授:语言不是"写出来",而是"用起来"

学生最容易犯的错误是把通用语言当"术语表文档"。正确做法是:

  • 词汇表是"约定",但真正的落点是命名交流
  • 发现歧义(同名不同义)时,要么拆词,要么划边界(有界上下文)

最小可用词汇表模板

你需要的不多,但必须完整:

text 复制代码
术语:
定义:
边界(属于/不属于):
同义词(允许):
禁用词(避免混用):
反例(常见误解):
代码命名建议(类/方法/字段/事件/命令):
示例句(业务/代码各一句):

示例:把"创建订单"命名为"下单"

很多系统把接口叫 createOrder,但业务更常说"下单/提交订单"。这不是"语言洁癖",而是减少认知负担:

  • 命令:PlaceOrder
  • 事件:OrderPlaced
  • 聚合:Order
  • 用例(应用服务方法):placeOrder(...)

常见误区

  • 一个概念多种叫法:create/submit/place 混用,最终所有人都不确定差异
  • 用技术词代替业务词:把"订单取消"说成"updateStatus(3)"
  • 词汇表不维护:模型变了,语言没变,造成"旧词新义"

课堂练习(可评分)

给定一段业务描述,输出一个 8~12 条的词汇表,并满足:

  • 至少 3 个术语包含"禁用词/同义词"
  • 至少 3 个术语给出"代码命名建议"
  • 至少 2 个术语给出"反例(常见误解)"

自测题

  1. 为什么说通用语言是"模型驱动"的?
  2. "订单取消"和"订单作废"如果在业务上含义不同,你会怎么做?
  3. 词汇表更新后,哪些地方必须同步更新?

延伸阅读

参考资料索引:references.md

相关推荐
Bingo_BIG2 分钟前
Java Spring框架:单表的查询、新增、修改、删除、导入、导出
java·spring·前后端
moMo9 分钟前
从固定流程到问题路由:让 LangGraph RAG 按需检索
架构
孙启超13 分钟前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int16 分钟前
深入理解C++系列(20)——C++11(下)
开发语言·c++
程序猿_极客37 分钟前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
白远山1 小时前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
LorryJovens1 小时前
【LAAP科研】双系统具身AGI范式研究——基于LAAP认知架构与Jev概率决策模型的系统性技术调研与范式验证
人工智能·gpt·安全·架构
码兄科技1 小时前
24小时自助健身房系统软件开发实战指南:功能设计与部署方案
java·spring boot·uni-app
程序猿_极客1 小时前
【免费】分享一套优质的基于SpringBoot的扶贫助农管理系统(详解)
java·springboot·课程设计·计算机项目