mcpField
P
principle-model-the-domain

principle-model-the-domain

github.com/hachej开发160 次安装1 天前更新
代码仓库

关于 principle-model-the-domain

面向开发者的设计 Skill,建议用数据结构表达领域规则,避免将规则散落在条件分支中。它帮助减少分支与无效状态,同时提醒避免引入不能简化代码的抽象。

主要功能

  1. 01用结构表达领域规则
  2. 02使用状态机和类型化模型
  3. 03集中管理重复行为与不变量
  4. 04避免不必要的抽象

适用场景

  1. 01用状态模型替代散落的生命周期标记
  2. 02通过注册表或查找表集中分支规则
  3. 03根据领域访问模式选择数据结构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hachej/boring-stack --skill principle-model-the-domain

安装后在 Claude Code 中输入/principle-model-the-domain确认已加载。

附带文件LICENSE

详细介绍

对领域进行建模

将真实领域编码到数据结构中,而不是把它分散在各个条件判断里。

原因: 分散的布尔值、重复的结构假设,以及散布在多个文件中的分支,都是意外复杂性。与领域相匹配的结构能让无效状态无法表示,并减少分支。在写入时选择这种结构成本很低。之后再补救就像一次重构,因此往往会被推迟。

可以考虑使用以下结构:

  • 使用状态机,而不是分散的布尔值、阶段或生命周期检查。
  • 使用类型化对象/模型,而不是松散的参数或重复的结构假设。
  • 使用映射、注册表、查找表或判别联合,而不是散布在多个文件中的分支。
  • 使用 reducer 或命令/事件模型,而不是临时修改状态。
  • 使用围绕一组领域知识组织的模块,而不是按加载、验证、转换和保存这样的顺序组织。执行顺序不等于归属关系。
  • 使用能汇集重复行为、所有权或不变量的小型模块边界。
  • 根据数据访问模式,使用队列、缓存、索引、图/树或规范化集合。
  • 也可以使用任何其他合适的结构。如果没有合适的结构,就弄清楚代码必须禁止什么,以及数据如何被读取,然后找到能准确编码这些要求的结构。

不要强行引入抽象。如果现有形式已经清晰、局部且不太可能扩展,就优先选择简单直接的代码。对于只增加间接层,却不能减少分支、重复规则、无效状态或生命周期风险的抽象,要保持怀疑。

忽略这一点的迹象是:新功能让现有的 if/else 链又多出一个分支,或需要新增一个必须与第一个布尔值保持同步的布尔值。按时间顺序拆分模块也是一种迹象。以阶段命名的模块会在不同步骤中重复相同的领域规则。

评论

支持 Markdown