用途
该技能适用于编写有状态逻辑,或代码分支很多、在多个文件中重复出现同一种形状假设的场景。它的核心主张是:把真实的领域编码进一个数据结构,而不是把领域知识散落在各处条件判断里。
主要能力
技能指出,散落的布尔值、重复的形状假设以及跨文件扩散的分支属于偶然复杂度。一个与领域匹配的结构可以让非法状态不可表示,并删除分支。在编写时选择这样的结构成本很低;事后恢复则会被视为重构而被推迟。
技能建议考虑以下结构:
- 用状态机代替散落的布尔值、阶段或生命周期检查。
- 用类型化对象/模型代替松散的参数或重复的形状假设。
- 用映射、注册表、查找表或可辨识联合代替跨文件扩散的分支。
- 用 reducer 或命令/事件模型代替临时的状态变更。
- 用围绕单一领域知识组织的模块代替“加载、校验、转换、保存”这类按执行顺序排列的模块;执行顺序不等于所有权。
- 用小型模块边界汇集重复行为、所有权或不变量。
- 在数据访问模式需要时,使用队列、缓存、索引、图/树或规范化集合。
- 任何其他合适的结构。当没有现成结构合适时,先弄清代码绝不能允许什么、数据如何被读取,再找到恰好编码这些约束的结构。
使用方式
技能强调不要强行抽象。如果当前形状已经清晰、局部且不太可能增长,应优先选择平淡的代码。对只增加间接层、却没有删除分支、重复规则、非法状态或生命周期风险的抽象应保持怀疑。
适用场景
当出现以下迹象时,说明可能跳过了这一步:新功能只是在现有 if/else 链上再加一个分支,或者出现第二个必须与第一个保持同步的布尔值。按时间分解(temporal decomposition)是另一个迹象;以阶段命名的模块会在各个步骤中重复相同的领域规则。
限制
资料未提供该技能的具体安装命令、平台支持、收费方式或效果数据。