用途:这是一条编码原则,主张把真实领域编码进数据结构,而不是把布尔值、形状假设和分支散落到多个文件里。资料指出,分散的布尔值、重复的形状假设和跨文件的分支属于偶然复杂度;与领域匹配的结构能让非法状态不可表示,并删除分支。在编写时选择结构成本低,事后补救则会被视为重构而被推迟。
可采用的结构:用状态机替代分散的布尔值、阶段或生命周期检查;用带类型的对象/模型替代松散参数或重复的形状假设;用映射、注册表、查找表或可辨识联合替代跨文件分支;用 reducer 或命令/事件模型替代临时状态修改;用围绕单一领域知识组织的模块替代“加载、校验、转换、保存”这类按执行顺序划分的模块,因为执行顺序不等于归属;用小的模块边界汇集重复行为、归属或不变式;在数据访问模式需要时使用队列、缓存、索引、图/树或规范化集合;也可用任何其他合适的结构。若都不合适,先弄清代码绝不能允许什么、数据如何被读取,再找恰好编码这些的结构。
限制:不要强行抽象。如果当前形状已经清晰、局部且不太可能增长,优先选择平淡的代码。对只增加间接层、却不消除分支、重复规则、非法状态或生命周期风险的抽象保持怀疑。跳过的信号是:新功能让已有 if/else 链又多一个分支,或出现必须与第一个保持同步的第二个布尔值;时间分解也是信号,按阶段命名的模块会在各步骤间重复相同的领域规则。资料未提供具体安装命令、代码示例或平台信息。