name: refactor description: 代码重构最佳实践基于Martin Fowler的目录和Clean Code原则(原为重构)。此技能应用于重构现有代码、改进代码结构、减少复杂性、消除代码异味或审查代码可维护性。在涉及提取方法、重命名、分解条件、减少耦合或提高可读性的任务中触发。
Fowler/Martin代码重构最佳实践
基于Martin Fowler的目录和Clean Code原则的全面代码重构指南,专为AI代理和LLM设计。包含8个类别中的43条规则,按影响优先级排序,以指导自动化重构和代码生成。
何时应用
在以下情况下参考这些指南:
- 重构现有代码以提高可维护性
- 分解长方法或大类
- 减少组件之间的耦合
- 简化复杂的条件逻辑
- 审查代码以识别代码异味和反模式
按优先级分类的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 结构与分解 | 关键 | struct- |
| 2 | 耦合与依赖 | 关键 | couple- |
| 3 | 命名与清晰度 | 高 | name- |
| 4 | 条件逻辑 | 高 | cond- |
| 5 | 抽象与模式 | 中高 | pattern- |
| 6 | 数据组织 | 中 | data- |
| 7 | 错误处理 | 中 | error- |
| 8 | 微重构 | 低 | micro- |
快速参考
1. 结构与分解(关键)
struct-extract-method- 提取方法用于长函数struct-single-responsibility- 应用单一职责原则struct-extract-class- 从大类中提取类struct-compose-method- 组合方法以实现可读流程struct-function-length- 保持函数不超过20行struct-replace-method-with-object- 用方法对象替换方法struct-parameter-object- 引入参数对象
2. 耦合与依赖(关键)
couple-dependency-injection- 使用依赖注入couple-hide-delegate- 隐藏委托以减少耦合couple-remove-middle-man- 移除中间人当过度时couple-feature-envy- 通过移动方法修复特性嫉妒couple-interface-segregation- 应用接口隔离原则couple-preserve-whole-object- 保持整个对象而不是字段
3. 命名与清晰度(高)
name-intention-revealing- 使用意图揭示的名称name-avoid-abbreviations- 避免缩写和首字母缩略词name-consistent-vocabulary- 使用一致的词汇name-searchable-names- 使用可搜索的名称name-avoid-encodings- 避免名称中的类型编码
4. 条件逻辑(高)
cond-guard-clauses- 用守卫子句替换嵌套条件cond-polymorphism- 用多态替换条件cond-decompose- 分解复杂的条件cond-consolidate- 整合重复的条件片段cond-special-case- 引入特殊情况对象cond-lookup-table- 用查找表替换条件
5. 抽象与模式(中高)
pattern-strategy- 为算法变体提取策略pattern-template-method- 为共享骨架使用模板方法pattern-factory- 为复杂对象创建使用工厂pattern-open-closed- 应用开闭原则pattern-composition-over-inheritance- 偏好组合而不是继承pattern-extract-superclass- 为共同行为提取超类
6. 数据组织(中)
data-encapsulate-collection- 封装集合data-replace-primitive- 用对象替换原始类型data-encapsulate-record- 将记录封装到类中data-split-variable- 分割有多次赋值的变量data-replace-temp-with-query- 用查询替换临时变量
7. 错误处理(中)
error-exceptions-over-codes- 使用异常而不是错误代码error-custom-exceptions- 创建领域特定的异常类型error-fail-fast- 使用前置条件快速失败error-separate-concerns- 将错误处理与业务逻辑分离
8. 微重构(低)
micro-remove-dead-code- 移除死代码micro-inline-variable- 内联简单变量micro-simplify-expressions- 简化布尔表达式micro-rename-for-clarity- 为清晰度重命名
如何使用
阅读单独的参考文件以获取详细解释和代码示例:
完整编译文档
获取扩展所有规则的完整指南: AGENTS.md