🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install github/awesome-copilot/refactor-method-complexity-reduce
💡 提示:需要 Node.js 和 NPM
重构方法以降低认知复杂度
目标
重构方法 ${input:methodName},将其认知复杂度降低到 ${input:complexityThreshold} 或以下,方法是将逻辑提取到专注的辅助方法中。
说明
- 分析当前方法,识别认知复杂度的来源:
- 嵌套的条件语句
- 多个 if-else 或 switch 链
- 重复的代码块
- 包含条件的多个循环
- 复杂的布尔表达式
- 识别可提取的机会:
- 可以提取到单独方法中的验证逻辑
- 重复出现的类型特定或案例特定的处理
- 复杂的转换或计算
- 多次出现的通用模式
- 提取专注的辅助方法:
- 每个辅助方法应有单一的、清晰的职责
- 将验证提取到单独的
Validate*方法中 - 将特定于类型的逻辑提取到处理程序方法中
- 为通用操作创建工具方法
- 使用适当的访问级别(静态、私有、异步)
- 简化主方法:
- 减少嵌套深度
- 将庞大的 if-else 链替换为更小的编排调用
- 在适当的地方使用 switch 语句以实现更清晰的分派
- 确保主方法读起来像一个高层流程
- 保留功能:
- 保持相同的输入/输出行为
- 保留所有验证和错误处理
- 保留异常类型和错误消息
- 确保所有参数正确传递给辅助方法
- 最佳实践:
- 当辅助方法不需要实例状态时,将其设为静态方法
- 尽早使用空值检查和前置条件保护子句
- 避免创建不必要的局部变量
- 对于多个返回值,考虑使用元组
- 将相关的辅助方法组合在一起
实现方法
- 在重构主流程之前,先提取辅助方法
- 逐步测试以确保没有退化
- 使用描述所提取职责的有意义名称
- 将提取的方法保留在它们被使用的位置附近
- 考虑将重复的代码模式变成通用方法
结果
重构后的方法应:
- 认知复杂度降低到目标阈值
${input:complexityThreshold}或以下 - 更具可读性和可维护性
- 具有清晰的关注点分离
- 更易于测试和调试
- 保留所有原始功能
测试与验证
关键:完成重构后,您必须:
- 运行与重构方法及其周边功能相关的所有现有测试
- 强制:显式验证测试结果显示 “failed=0”
- 切勿假设测试通过 – 始终检查实际的测试输出
- 查找包含通过/失败计数的摘要行(例如,”passed=X failed=Y”)
- 如果摘要显示任何数字不等于 “failed=0″,则测试已失败
- 如果测试输出在文件中,请读取整个文件以定位并验证失败计数
- 运行测试不等同于验证测试通过
- 在明确确认零失败之前,请勿继续
- 如果任何测试失败 (failed > 0):
- 清楚地说明有多少测试失败
- 分析每个失败,了解哪些功能被破坏了
- 常见原因:空值处理、空集合检查、条件逻辑错误
- 在重构代码中找出根本原因
- 修正重构代码以恢复原始行为
- 重新运行测试并在输出中验证 “failed=0”
- 重复此过程,直到所有测试通过 (failed=0)
- 验证编译 – 确保没有编译错误
- 检查认知复杂度 – 确认指标达到或低于目标阈值
${input:complexityThreshold}
确认清单
- 代码编译无错误
- 测试结果明确显示 “failed=0”(通过读取输出验证)
- 所有测试失败均已被分析并修正(如果发生)
- 认知复杂度达到或低于目标阈值
${input:complexityThreshold} - 所有原始功能均被保留
- 代码遵循项目约定和标准
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/refactor-method-complexity-reduce
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)