principle-model-the-domain
更新于 2026-10-01
用数据结构编码真实领域,而非把领域散在条件判断里。
原因: 散落的布尔、重复的形状假设与跨文件分支是偶然复杂度。匹配领域的结构使非法状态无法表示并删除分支。写时选择便宜。事后恢复像 refactor,会被推迟。
可优先考虑的结构:
- 状态机,替代散落的布尔、阶段或生命周期检查。
- 类型化对象/模型,替代松散参数或重复形状假设。
- map、registry、查找表或可区分联合,替代跨文件分支。
- reducer 或 command/event 模型,替代随意状态变更。
- 围绕一块领域知识组织的模块,而非 load、validate、transform、save 这类序列。执行顺序不是所有权。
- 小模块边界,汇聚重复行为、所有权或 invariant。
- queue、cache、index、图/树或规范化集合,当数据访问模式需要时。
- 任何合适的其他结构。都不合适时,弄清代码绝不允许什么、数据如何被读,再找恰好编码该点的结构。
不要强造抽象。当前形状已清晰、局部且不太可能继续膨胀时,优先简单直接的代码。对增加间接却不删分支、重复规则、非法状态或生命周期风险的抽象保持怀疑。
跳过本原则的信号:新功能让现有 if/else 链又长一支,或第二个布尔须与第一个同步。按时间分解是另一信号。阶段命名模块会在多步重复同一领域规则。
本站是非官方的 pstack 中文学习站,和 poteto 没有隶属关系。译文对照的是 cursor/plugins 仓库里的 pstack/ 目录。本站不发行中文版插件。 github.com/cursor/plugins