Skip to content

simplify — 代码简化

  • 触发方式: /simplify 或关键词「simplify」「简化」「清理代码」「重复代码」
  • 适用场景: 代码审查后发现冗余、重构后清理、消除重复逻辑
  • 不适用场景: 性能优化、架构重构、功能变更

功能概述

simplify 审查修改过的代码,检查可复用性、质量和效率问题,并自动修复。它专注于微观层面的代码改进:消除重复、提取公共逻辑、改善可读性。

触发条件

以下情况会自动触发 simplify

  • 代码提交/修改后想清理
  • 发现重复代码
  • 使用 /simplify 命令

使用示例

示例 1:消除重复逻辑

/simplify 审查 src/components/ 下的改动,消除重复代码

修改前:

javascript
// UserList.tsx
const sorted = users.sort((a, b) => a.name.localeCompare(b.name));

// AdminList.tsx
const sorted = admins.sort((a, b) => a.name.localeCompare(b.name));

修改后:

javascript
// utils/sortByName.ts
export const sortByName = <T extends { name: string }>(items: T[]) =>
  [...items].sort((a, b) => a.name.localeCompare(b.name));

示例 2:简化条件逻辑

/simplify 简化 src/utils/permission.ts 中的权限判断

示例 3:提取公共 Hook

/simplify UserProfile 和 AdminProfile 中数据获取逻辑重复,提取公共 Hook

示例 4:清理冗余状态

/simplify 审查 Dashboard 组件,状态管理似乎过于复杂

示例 5:简化嵌套回调

/simplify 将 src/services/order.ts 中的回调嵌套改为 async/await

简化原则

  1. DRY 但不过度 — 三次重复再抽象,两次重复可容忍
  2. 命名优于注释 — 用清晰的命名替代解释性注释
  3. 早返回减少嵌套 — guard clause 替代深层 if-else
  4. 单一职责 — 一个函数做好一件事
  5. 不可变数据 — 用 map/filter/reduce 替代 for 循环变异

注意事项

  • simplify 关注微观简化,不做大规模架构重构
  • 它不会改变函数的外部行为 — 只优化内部实现
  • 简化后的代码可能行数更多(如提取类型定义),但可读性更佳
  • 不要为了「看起来简洁」而牺牲可读性 — 这是一条红线
  • 三个相似的代码块 > 一个过早的抽象

相关 Skills