Skip to content

Code Simplification 解决的是 AI 把代码写得过度复杂的问题。它不是追求更少行数,而是在行为不变的前提下减少嵌套、命名不清、重复逻辑和没必要的抽象。

AI 写复杂了怎么收回来:Code Simplification 怎么用

下载 code-simplification 中文版 Skill ZIP

一个保存按钮,AI 写出了 manager、adapter 和 strategy。

为了一个简单按钮,它可能写 hooks、manager、adapter、config、fallback、strategy。

代码能跑,但你一看就知道:太重了。

code-simplification 这个技能的目标是把复杂度收回来。不是把代码压短,而是让后面的人更容易理解。

简化前先确认行为

能跑的代码,不要急着改。

简化前要先知道它现在做什么:输入是什么,输出是什么,副作用是什么,错误路径是什么,谁在调用它。

如果你还没理解代码,就让 AI 删除分支、合并函数,很容易把隐藏约束删掉。

给 AI 的要求可以写成:

md
先解释这段代码的职责、调用方、边界条件和测试覆盖。
在确认行为前,不要开始简化。

简化不是减少行数

有些短代码更难读。

嵌套三层的三元表达式、复杂的 reduce、过度链式调用,看起来短,但读起来累。

好的简化通常是:

  • 用早返回减少嵌套。
  • 把复杂条件命名成函数。
  • 删除没有价值的包装层。
  • 合并重复逻辑。
  • 改清楚命名。
  • 去掉解释“代码在做什么”的注释。

如果更短但更绕,那不是简化。

只简化当前范围

AI 一旦开始重构,很容易一路扫全项目。

这很危险。

简化应该优先限定在刚改过的代码,或者 review 明确指出的问题。不要顺手整理无关模块,不要因为“看着不舒服”就动旧代码。

你可以这样限制:

md
只简化这次 diff 里新增或修改的代码。
不要重构无关文件。
每个改动都要保持行为不变。

常见的 AI 复杂度

AI 生成代码里,常见复杂度有这些:

  • 为一个分支写一套策略模式。
  • 单次使用的 helper 抽到单独文件。
  • 为不会发生的错误写 fallback。
  • 参数对象层层传递,实际只有一个调用方。
  • 命名很泛:data、result、item、handler。
  • 注释解释一眼就能看懂的代码。

这些都可以收回来。

简化后要验证

简化是重构,不应该改变行为。

所以验证很关键:

  • 原有测试必须通过。
  • 如果没有测试,至少走一遍关键路径。
  • 如果是纯函数,补几个输入输出用例。
  • 如果删了分支,要确认分支真的没有必要。

不要让 AI 用“逻辑等价”来替代验证。

你可能还需要

同类技能:

当 AI 写出一堆“以后可能有用”的东西时,先问一句:现在真的需要吗?