SuperAPI AI 工具集

principle-model-the-domain

编程与开发

查看项目

更新于 10-28 16:16

技能介绍

用途

该技能用于在编写有状态逻辑时,或当代码分支很多、跨文件重复同一形状假设时,指导把真实领域编码进数据结构,而不是把领域规则散落在条件判断里。其核心主张是:与领域匹配的结构可以让非法状态不可表示,并删除分支;在编写时选择这种结构成本很低,事后恢复则会被视为重构而被推迟。

主要能力

技能建议在以下情形中优先考虑相应结构:

  • 用状态机替代散落的布尔值、阶段或生命周期检查。
  • 用类型化模型替代松散参数或重复的形状假设。
  • 用映射、注册表、查找表或可辨识联合替代分散在多个文件中的分支。
  • 用 reducer 或命令/事件模型替代临时的状态变更。
  • 用围绕单一领域知识组织的模块替代“加载、校验、转换、保存”这类按执行顺序划分的模块;执行顺序不等于归属。
  • 用小的模块边界聚合重复行为、归属关系或不变量。
  • 在访问模式需要时,使用队列、缓存、索引、图、树或规范化集合。
  • 其他任何合适的结构。当没有现成结构合适时,先弄清代码绝不能允许什么、数据如何被读取,再找到恰好编码这些约束的结构。

使用方式

该技能以原则形式给出,并提供一个调用入口:当工作涉及梳理项目术语、领域关系、不变量或归属时,调用 /domain-modeling,并通过它统一项目中的规范产物。

适用场景

适用于编写有状态逻辑、代码分支过多、跨文件重复同一形状假设的场景,也适用于需要梳理项目术语、领域关系、不变量与归属的场景。

限制与注意事项

不要强行抽象。如果当前形状已经清晰、局部且不太可能增长,宁可保留朴素代码。对只增加间接层、却不减少分支、重复规则、非法状态或生命周期风险的抽象应保持怀疑。

判断是否跳过了该原则的信号包括:新功能只是在现有 if/else 链上再加一个分支,或出现第二个必须与第一个保持同步的布尔值;按时间顺序分解也是信号之一;以阶段命名的模块会在各步骤中重复相同的领域规则。