mcpField
P
principle-model-the-domain

principle-model-the-domain

github.com/michael-denyer开发3.7k892 次安装1 天前更新
代码仓库

关于 principle-model-the-domain

这项编码技能指导开发者用数据结构和模块边界直接表达领域规则,减少分散的条件判断与需同步的状态,同时避免只增加间接层的抽象。

主要功能

  1. 01用状态机或类型结构建模状态
  2. 02以注册表或联合类型替代分散分支
  3. 03围绕领域归属与不变量组织模块
  4. 04按访问模式选择集合结构
  5. 05避免只增加间接层的抽象

适用场景

  1. 01用领域结构替换不断增长的条件链
  2. 02避免状态出现无效组合
  3. 03集中跨阶段重复的领域规则

安装

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

$npx skills add https://github.com/michael-denyer/pstack-claude --skill principle-model-the-domain

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

详细介绍

对领域建模

将真实领域编码到数据结构中,而不是将其散落在各个条件判断里。与领域相匹配的结构能让无效状态无法表示,并减少分支。在编写代码时选择这种结构成本很低。之后再补上则像一次重构,而且往往会被搁置。

可以考虑:

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

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

如果新功能只是在现有的 if/else 链中再增加一个分支,或者又添了一个必须与第一个保持同步的布尔值,这就说明你忽略了这一点。按时间顺序拆分也是一种迹象。以阶段命名的模块会在各个步骤中重复相同的领域规则。

评论

支持 Markdown