该技能用于在例程和类设计层面执行《Code Complete》的检查,重点捕捉无法事后修补、只能靠架构调整解决的设计问题,共三项检查。
主要能力包括:LSP 测试,判断“A 是 B”是否字面成立,不成立则继承错误;以包含(containment)为默认方案,继承不可修正而包含可修正;参数数量,超过 7 个参数预示接口错误。注意测试通过并不代表没有设计债,代码可能首日通过全部测试,却在后续修改时暴露 VIOLATION 级问题。共享阈值(参数 7±2、继承深度、例程长度、内聚谱)见 ${CLAUDE_PLUGIN_ROOT}/references/cc-foundations.md。
不适用场景:一次性脚本与自动化;原型开发;无行为的纯 DTO(但含验证/equals/toString 的 DTO 不豁免);框架强制的继承(如 Android Activity);经性能剖析的关键内层循环;测试替身。
工作模式分两种。CHECKER 模式:对照例程与类检查清单(Read(${CLAUDE_SKILL_DIR}/checklists.md)),逐项输出 | Item | Status | Evidence | Location | 一行。严重度:VIOLATION 为未通过检查项(如 10+ 参数)、破坏 LSP/封装;WARNING 为接近上限需说明理由(8–9 参数、3 层继承)或主观抽象问题;PASS 为达标。APPLIER 模式:产出类接口设计、继承或包含决策、例程签名与内聚分类。默认包含;仅当“is-a”字面成立(LSP)才继承。继承深度目标小于 3,3 为 WARNING,4+ 为 VIOLATION,6+ 为 SEVERE。参数上限 7:1–5 为 PASS,6–7 为 PASS(略需关注),8–9 为 WARNING,10+ 为 VIOLATION(用参数对象或拆分职责)。计数包含默认参数,可变参数(*args/...)算 1 个。参数顺序约定:仅输入在前,输入输出居中,仅输出在后。目标为功能性内聚;设计时问“这个类应隐藏什么”。
内聚分类按从优到劣,遇首个匹配即停止:功能性(一个且仅一个操作,ACCEPT);顺序性(按固定顺序逐级共享数据,ACCEPT w/caution);通信性(使用同一数据但彼此无关,ACCEPT w/caution);时间性(因同时执行而合并,若仅编排调用则接受,若直接干活则修复);过程性(按外部要求排序,REJECT);逻辑性(控制标志选择多个无关操作,REJECT);偶然性(无可辨关系,REDESIGN)。
继承与包含决策:仅共享数据则包含公共对象;仅共享行为则用接口/协议;数据与行为都共享,才在“is-a”字面成立时继承,否则包含。决定继承前最终检查:深度小于 3(务必小于 6)?不需要空覆盖?基类数据全部私有?任一为否则改用包含。
证据(维护期数据,非发布期):高内聚减少故障;深继承与更多故障相关;信息隐藏约减少 4 倍故障;高耦合约 7 倍错误、约 20 倍修复成本。完成后衔接 Skill(code-foundations:cc-defensive-programming)。