用途:在保持可观察行为不变的前提下重构或清理代码。它执行一次由调用方选定的结构变换,并报告结果。“保持行为”必须用前后对比检查来证明,不能只做断言。
什么是行为:除非调用方明确排除某个面,以下都必须保留——消息与退出码(错误和输出文本按字节比较,退出码、错误类型、哪个输入触发哪个错误都保持一致);近似重复之间的差异(合并重复分支时,每个差异如常量、比较、消息、额外步骤都要作为参数或分支带过去);接口(公开签名、默认值、返回类型、持久化字段名、协议值、CLI 标志);顺序与覆盖(分支优先级、默认处理、求值次数、副作用顺序、运行的测试集合)。
流程:用调用方领域术语说明要保留的行为、聚焦的验收面和具体的结构问题;运行聚焦检查与最小回归检查,记录诚实基线(含可复现的环境性失败);对可执行行为做对比时,先固定起始源码并构建基线,保留该二进制与对比输入;只做一次有边界的变换;途中发现的 bug 或可疑不一致要单独报告(位置、为何看起来不对)并保持未修改;在相同输入(含错误路径)上重跑同样的检查;报告后停止,不还原、不缩小、不重试、不提交、不验证、不路由后续工作。
无法执行时(无运行时、无测试、代码只在消息中给出):中立性未被证明,需给出确切的 before/after 命令与输入(含错误路径),并列出未被检查的行为面。
报告格式包含 transformation、preserved、checks、outputs、diff、suspected bugs、not checked 等字段。此外还涉及接口成本考量:新增接口或拆分模块前先查看代表性调用方;需要接缝且存在多个候选时,先在可丢弃的隔离环境(临时分支、worktree、副本)中探测,最多两次,若第二个也受阻则把两项发现报告给调用方;直接在工作树中切出第一个想到的接缝属于过早接缝失败模式。
中立性门禁:变换必须以行为一致的证明为前提;对产生输出的面(生成器、序列化器、格式化器、报告)在相同输入上做前后哈希按字节比较;跳过后补做的门禁属于事后中立性失败模式;未被门禁覆盖的面要列入 not checked。
适用范围与限制:适合要求行为不变的重构任务;一次只做一种变换;不修复途中发现的 bug;无法执行环境时只能给出待运行命令;命名歧义影响行为时归于既有领域定义。以上介绍基于公开资料,未提供的收费、价格、平台或效果信息暂未提供。