title: "02 通用语言与协作"
学习目标
- 理解通用语言(Ubiquitous Language)的作用:消除"人脑翻译"
- 能建立最小可用的词汇表,并把它映射到代码命名
- 知道如何在模型演化时同步更新语言与代码
核心概念
通用语言(Ubiquitous Language)
通用语言是围绕模型建立的共同语言,要求团队在:
- 讨论、文档、图
- 代码中的类名、方法名、事件名、命令名
都尽量使用同一套词汇与定义。
课堂讲授:语言不是"写出来",而是"用起来"
学生最容易犯的错误是把通用语言当"术语表文档"。正确做法是:
- 词汇表是"约定",但真正的落点是命名 与交流
- 发现歧义(同名不同义)时,要么拆词,要么划边界(有界上下文)
最小可用词汇表模板
你需要的不多,但必须完整:
text
术语:
定义:
边界(属于/不属于):
同义词(允许):
禁用词(避免混用):
反例(常见误解):
代码命名建议(类/方法/字段/事件/命令):
示例句(业务/代码各一句):
示例:把"创建订单"命名为"下单"
很多系统把接口叫 createOrder,但业务更常说"下单/提交订单"。这不是"语言洁癖",而是减少认知负担:
- 命令:
PlaceOrder - 事件:
OrderPlaced - 聚合:
Order - 用例(应用服务方法):
placeOrder(...)
常见误区
- 一个概念多种叫法:create/submit/place 混用,最终所有人都不确定差异
- 用技术词代替业务词:把"订单取消"说成"updateStatus(3)"
- 词汇表不维护:模型变了,语言没变,造成"旧词新义"
课堂练习(可评分)
给定一段业务描述,输出一个 8~12 条的词汇表,并满足:
- 至少 3 个术语包含"禁用词/同义词"
- 至少 3 个术语给出"代码命名建议"
- 至少 2 个术语给出"反例(常见误解)"
自测题
- 为什么说通用语言是"模型驱动"的?
- "订单取消"和"订单作废"如果在业务上含义不同,你会怎么做?
- 词汇表更新后,哪些地方必须同步更新?
延伸阅读
参考资料索引:references.md