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简化原则
- DRY 但不过度 — 三次重复再抽象,两次重复可容忍
- 命名优于注释 — 用清晰的命名替代解释性注释
- 早返回减少嵌套 — guard clause 替代深层 if-else
- 单一职责 — 一个函数做好一件事
- 不可变数据 — 用
map/filter/reduce替代 for 循环变异
注意事项
simplify关注微观简化,不做大规模架构重构- 它不会改变函数的外部行为 — 只优化内部实现
- 简化后的代码可能行数更多(如提取类型定义),但可读性更佳
- 不要为了「看起来简洁」而牺牲可读性 — 这是一条红线
- 三个相似的代码块 > 一个过早的抽象
相关 Skills
- review — 先审查再简化
- improve-codebase-architecture — 宏观架构改进
- tdd — 简化后用测试确保行为不变