用途:在规格(write-spec)通过后、进入写计划(write-plan)之前,若该切片会新增模块、端口或 IO 边界,用 SOLID 锁定结构;也用于救援场景,如单元测试需要 3 个以上 mock、评审/PR 出现耦合、tdd 中途卡在结构问题上。它只处理结构与依赖方向,不替代产品取舍讨论。
主要能力:以五条工程检查约束设计。S 单一职责:一个单元只有一个变更理由,名称含“and”或“管理一切”就拆分,区分编排、策略、IO、格式化。O 开闭:优先用新类型、策略或组合扩展,而非不断修改核心 switch,同时避免预建插件系统。L 里氏替换:子类型必须遵守调用方契约,不因复用而继承。I 接口隔离:端口小而贴合调用方,避免巨型接口。D 依赖倒置:高层策略依赖抽象端口,不直接依赖 DB、HTTP、FS、SDK,适配器放在边缘。
使用方式:触发后先声明“Using solid to …”,然后命名各单元、画出依赖箭头(domain → ports ← adapters)、依次做 SRP、ISP、DIP 检查,并做“剧场检查”——每个新接口必须有产品理由,不能只为测试而存在。最后交接:Gate 模式转 write-plan,Rescue 模式回到 tdd。若产品问题重新打开,则回到 grill。
适用场景:设计或评审模块边界、类/API 形态、依赖方向;重构以提升可测试性;PR 引入耦合或上帝类;测试需要大量 mock 来“隔离”。
限制:产品“做什么/为什么”未定时不应使用,应先用 grill;纯胶水代码、顺手重命名、一次性原型、没有新边界的微小改动可跳过。禁止为满足测试而发明假抽象,也禁止“先 mock 整个世界”或“暂时上帝类没关系”的做法。
资料未提供具体安装命令、价格、平台支持或代码示例。