SuperAPI AI 工具集

principle-model-the-domain

写作与研究

查看项目

更新于 10-16 06:22

技能介绍

用途:在编写有状态逻辑,或代码分支过多、在多个文件中重复同一种形状假设时应用。核心是把真实领域编码进一个数据结构,而不是把领域规则散落在条件判断里。

为何这样做:散落的布尔值、重复的形状假设和跨文件的分支属于偶然复杂度。与领域匹配的结构能让非法状态不可表示,并删除分支。在编写时就选择结构成本很低;事后恢复这种结构往往被当作重构而不断推迟。

可采用的结构包括:用状态机替代散落的布尔值、阶段或生命周期检查;用带类型的对象或模型替代松散参数或重复的形状假设;用映射、注册表、查找表或判别联合替代散落各处的分支;用 reducer 或命令/事件模型替代临时性状态变更;用围绕单一领域知识组织的模块替代“加载、校验、转换、保存”这类按执行顺序命名的序列,因为执行顺序不等于所有权;用小的模块边界收敛重复行为、所有权或不变量;在数据访问模式需要时使用队列、缓存、索引、图/树或规范化集合;也可使用任何其他合适的结构。当没有现成结构可用时,先想清楚代码绝不能允许什么、数据会被如何读取,再找出正好能编码这两点的结构。

限制与注意事项:不要强行引入抽象。如果当前形状已经清晰、局部且不太可能增长,宁可保留平淡的代码。对那种增加间接层却没有消除分支、重复规则、非法状态或生命周期风险的抽象要保持怀疑。

跳过此原则的信号是:新功能只是在既有 if/else 链上再加一个分支,或又增加一个必须与第一个保持同步的布尔值。按时间分解也是信号:以阶段命名的模块会在各步骤间重复同一套领域规则。