用途:在不改变行为的前提下降低代码复杂度,让代码更易读、理解和修改。判断标准不是行数,而是新成员是否更容易看懂。
适用场景:功能已可用且测试通过但实现偏重;审查发现可读性或复杂度问题;出现深层嵌套、长函数或命名不清;合并引入重复后的代码;整理压力下写出的代码。不适合用于已足够干净的代码、尚未理解的代码、性能关键路径,或即将整个重写的模块。
五项原则:精确保留行为(输入输出、错误行为、副作用与顺序、现有测试均不变);遵循项目约定(先读 CLAUDE.md 及邻近代码,匹配导入、声明、命名、错误处理与类型标注风格);清晰优先于聪明(显式写法优于难以解析的紧凑写法);保持平衡(避免过度内联、合并无关逻辑、移除有意义的抽象、单纯优化行数);限定在变更范围内,默认只处理近期修改过的代码。
流程:一、动手前先理解,参考 Chesterton's Fence,弄清职责、调用关系、边界与错误路径、相关测试、原写法原因及 git blame 上下文。二、识别机会,包括结构复杂度(深层嵌套、长函数、嵌套三元、布尔参数、重复条件)与命名可读性(泛化/缩写/误导性命名、注释取舍)及冗余(重复逻辑、死代码、不必要抽象、过度工程化、冗余类型断言)。三、增量应用,每次一个简化并跑测试,重构与功能变更分开提交;若触及超过 500 行,改用 codemods、sed 或 AST 转换。四、验证整体是否更易理解、是否引入不一致模式、diff 是否干净可审查,若更差则回滚。
资料另给出 TypeScript/JavaScript、Python、React/JSX 的简化示例及常见借口辨析、危险信号与完成后的验证清单。具体安装命令:暂未提供。