67837df8d0
- 新增全套考试卷、评估卷、参考答案与考试培训包模板 - 修正slidev培训课件:调整模块标题、链路图缩放,替换工单示例为通用业务对象 - 修正课堂红线表述为证据红线,将小组作业调整为个人作业要求 - 新增权限、状态流转、审计日志、看板指标四类可复用业务规则块 - 整理AI工程技能交付包,迁移旧资产至客户专属交付包并统一术语 - 新增考试输出模板与TRAE使用记录文档
5.5 KiB
5.5 KiB
模块 3:Rule 的设计契约
Rule 不是“代码要规范”这类口号。
一条可执行 Rule 必须说明:它基于什么证据、在哪些场景生效、必须做什么、不能做什么,以及如何验收。
来源可信
边界明确
结果可验
先给 Rule 标注证据等级
| 等级 | 什么时候使用 | 典型写法 |
|---|---|---|
| 硬约束 | 配置、构建、CI 或显式规范直接证明 | 必须 / 禁止 |
| 观察性约束 | 多处源码反复出现,但没有书面规范 | 默认采用 / 优先复用 |
| 待确认约束 | 对交付很重要,但当前项目无法证明 | 需确认 / 不下结论 |
不要把“一个代码样例”或“通用最佳实践”直接升级成项目硬规则。
一条 Rule 的六个字段
## 状态变更必要信息保护
- 级别:观察性约束
- 适用场景:Service 方法会写入业务状态或释放、占用资源。
- 必须:在任何写入前校验本次状态变更必需的信息。
- 禁止:仅依赖前端必填;将条件必填扩大为全表非空。
- 来源证据:状态更新、资源更新与现有调用链。
- 验收方式:无效输入被拒绝;正常路径及副作用单独验证。
常见的 Rule 失效方式
| 写法 | 为什么失效 | 改写方向 |
|---|---|---|
| “后端要做好校验” | 没有触发点、位置和验收 | 指出状态写入前的必要信息保护 |
| “所有字段都不能空” | 把条件规则扩大为数据模型规则 | 写清具体状态与字段条件 |
| “统一使用 Service” | 把架构偏好误当业务约束 | 说明为什么该规则需要覆盖复用入口 |
| “严格测试” | 无法判断是否满足 | 写出无效输入、正常路径和副作用验证 |
好的 Rule 约束行为,不替人猜业务,也不替项目做架构重写。
Rule 的验收不是“读起来像规范”
能触发
知道什么时候应用
知道什么时候应用
能约束
必须与禁止清楚
必须与禁止清楚
能取证
来源不是主观偏好
来源不是主观偏好
能验证
可用代码、测试或检查确认
可用代码、测试或检查确认