mcpField
S
simplify-code

simplify-code

github.com/vudovn开发8.2k57 次安装9 周前更新
代码仓库

关于 simplify-code

帮助开发者审查并降低代码复杂度的技能,提供识别冗余抽象、死代码、深层嵌套和过度参数化的清单与简化步骤,并强调验证行为不变。

主要功能

  1. 01识别不必要的抽象
  2. 02检查并清理死代码
  3. 03减少深层嵌套
  4. 04简化参数过多的函数
  5. 05按步骤简化并验证行为

适用场景

  1. 01重构难以理解的代码
  2. 02清除未使用代码和配置
  3. 03降低函数与控制流复杂度
  4. 04简化后检查测试与构建

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vudovn/ag-kit --skill simplify-code

安装后在 Claude Code 中输入/simplify-code确认已加载。

详细介绍

简化代码——减少不必要的复杂性

最好的代码,就是你不必编写的代码。其次,是任何人都能读懂的代码。

核心原则

Complexity is a cost. Every abstraction, every indirection, every clever pattern
adds cognitive load. Simplify ruthlessly unless complexity serves a clear purpose.

简化检查清单

1. 不必要的抽象
问题简化方式
只负责委托的包装类移除包装类,直接使用内部类
只创建一种类型的工厂改用直接构造
只有一种策略的策略模式改用简单函数
只有一种实现的接口移除接口,直接使用类
只有一个子类的抽象类合并到子类中
仅包含 2 个值的配置对象改用函数参数
2. 死代码
问题操作
未使用的导入移除
不可达分支移除(先检查测试)
注释掉的代码移除(它在 git 历史中)
未使用的变量/函数移除
超过 6 个月的 TODO 注释移除或创建问题
已发布功能的功能标志移除标志,保留代码
3. 深层嵌套
// ❌ Before: 4 levels deep
function process(data) {
  if (data) {
    if (data.items) {
      for (const item of data.items) {
        if (item.active) {
          doSomething(item)
        }
      }
    }
  }
}

// ✅ After: Early returns + filter
function process(data) {
  if (!data?.items) return

  data.items
    .filter(item => item.active)
    .forEach(doSomething)
}
4. 参数过多的函数
// ❌ Before: 8 parameters
function createUser(name, email, age, role, dept, active, verified, avatar) { }

// ✅ After: Object parameter
function createUser(opts: CreateUserOpts) { }
5. 过早优化
问题简化方式
为少于 100 个条目自定义缓存移除缓存,先进行测量
对开销很小的函数进行记忆化移除记忆化
为小型模块延迟加载直接导入
为 3 种状态设计复杂状态机改用简单的 if/else 或 switch

简化流程

步骤 1:识别复杂性
- Count nesting levels (target: ≤3)
- Count function parameters (target: ≤4)
- Count lines per function (target: ≤30)
- Count abstractions per feature (target: ≤2)
- Check for dead code (target: 0)
步骤 2:确认理解

简化之前,请确保你理解:

  • 代码的实际功能(而非它看起来的功能)
  • 编写成这样的原因(也许有其理由)
  • 哪些测试覆盖了它(简化不得破坏测试)
步骤 3:逐步简化
1. Remove dead code first (safest)
2. Flatten nesting with early returns
3. Inline trivial abstractions
4. Merge related functions
5. Simplify data structures
步骤 4:确认行为未改变
npm run test    # All existing tests still pass
npm run build   # Still compiles

何时不应简化

情况保留复杂性的原因
性能关键的热点路径优化看起来可能很复杂,但确有必要
框架/库要求外部限制
明确要求使用的模式用户选择了这种架构
很快就需要扩展抽象为已知的增长需求做好准备

先询问:“这种模式似乎过度设计了。我应该简化它,还是这种抽象另有原因?”

评论

支持 Markdown