with one click
code-refactor
该skill没有执行文件,为操作指引:如何重构
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
该skill没有执行文件,为操作指引:如何重构
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
AI记忆持久化系统。使用memrec存储、检索、管理跨会话记忆。支持项目隔离、混合检索(KNN+BM25)、MMR重排、中文搜索。触发场景:(1)重要决策需记录,(2)关键知识需保存,(3)项目上下文需跨会话保持,(4)用户偏好需记忆,(5)检索历史知识辅助当前任务。
Rust 性能分析技能:通过 cargo flamegraph 生成火焰图(SVG),定位 CPU 热点函数并量化占比。适用于 Rust 项目性能瓶颈定位、热点分析、优化验证。触发场景:(1)分析 Rust 代码性能瓶颈,(2)定位 CPU 热点函数,(3)量化函数调用占比,(4)优化前后对比验证,(5)bench/unittest 性能不达预期时根因分析。
读取所有源代码,解构为设计图、设计文档、数据库设计; 没有执行文件,请按流程执行
项目问题侦测技能:综合分析设计、性能、安全问题,评分并提出重构或重建方案
局部代码修改技能:最小化修改完成功能,确保无蝴蝶效应,支持独立测试验证和全量关联检查
代码审查框架:通用审查流程 + 语言特定规则引用,支持多语言代码审查
| name | code-refactor |
| description | 该skill没有执行文件,为操作指引:如何重构 |
从软件设计本质层面提炼可复用的重构方法论,指导代码质量改进。
退化机制:复制粘贴→知识分裂,快速修复→破坏设计意图,需求变更→补丁叠加,知识遗忘→意图模糊
退化规律:所有代码都会退化,重构是必然的维护行为
类型 = 值集合 + 操作集合 + 不变量
类型退化链条:强类型→弱类型,枚举→字符串常量→魔法字符串→硬编码,编译检查→运行时判断→运行时错误
退化信号:值被用来判断行为、编译期错误变成运行时错误、枚举退化成字符串常量
多态 = 同一接口 + 不同行为
| 分发方式 | 时机 | 安全性 |
|---|---|---|
| if-else | 运行时 | 低(易遗漏) |
| switch | 运行时 | 中 |
| 虚方法 | 运行时 | 高 |
| 模板/泛型 | 编译期 | 最高 |
本质:用类型系统分发行为,而非运行时判断
数据结构 = 数据组织方式 + 访问操作 + 复杂度保证
| 访问模式 | 推荐 | 不推荐 | 原因 |
|---|---|---|---|
| 顺序遍历 | List/Array | Map | 简单高效 |
| Key查找 | Map/HashMap | List | O(1) vs O(n) |
| 范围查询 | TreeMap | HashMap | 有序性 |
| 去重 | Set | List | 自动去重 |
代码异味 → 症状(What) → 根因(Why) → 设计退化(本质)
| 退化类型 | 信号 | 根因 |
|---|---|---|
| 类型退化 | 值判断行为 | 类型信息丢失 |
| 数据退化 | 嵌套查找 | 结构不匹配 |
| 行为退化 | 重复代码 | 缺少抽象 |
| 关系退化 | 紧耦合 | 依赖方向错误 |
| 问题本质 | 推荐方案 | 收益 |
|---|---|---|
| 类型退化 | 多态/策略模式 | 类型安全、易扩展 |
| 数据退化 | 重建索引/换容器 | 性能提升 |
| 行为退化 | 提取抽象 | 减少重复 |
| 关系退化 | 解耦/依赖注入 | 降低耦合 |
决策原则:优先解决根本原因;选择收益/成本比最高方案;小步快跑,持续验证
识别 → 分析 → 方案 → 小步 → 验证 → 提交
小步原则:每次只改一个问题,每次改完可编译,每次提交可回退
| 维度 | 指标 | 方法 |
|---|---|---|
| 性能 | 时间/空间复杂度 | 算法分析、基准测试 |
| 质量 | 圈复杂度、重复率 | 静态分析工具 |
| 可维护性 | 扩展性、可读性 | 代码审查 |
类型退化:if (xxx.equals(value)) 多次、枚举只定义字符串常量、实体字段String而非枚举、switch-case on String
数据退化:三层以上嵌套循环、List遍历查找、循环内.filter()、重复数据转换
行为退化:相似代码块>5行、类>500行、方法>50行、参数>5个
关系退化:循环依赖、高耦合、依赖具体实现而非接口
类型退化:大量if-else → 行为差异明显?→ 是:多态(变体稳定?→ 是:继承 / 否:策略模式) / 否:配置表
数据退化:嵌套循环查找 → 访问模式明确?→ 是:重建索引(查找频繁?→ 是:Map索引 / 否:保持原状) / 否:重构数据流
详见 templates/strategy-pattern.md
核心五步:识别变体 → 定义接口 → 实现策略 → 注入策略 → 替换判断
| 问题 | 原方案 | 优化方案 | 复杂度变化 |
|---|---|---|---|
| 嵌套filter | O(n²)~O(n³) | 预建Map索引 | → O(n) |
| 不必要排序 | O(n log n) | 删除 | → O(0) |
| 频繁查找 | List遍历O(n) | Map查找 | → O(1) |
| 场景 | 推荐 | 原因 |
|---|---|---|
| 去重 | Set | 自动去重 |
| 查找 | Map | O(1)查找 |
| 顺序遍历 | List | 简单高效 |
| 不变集合 | Collections.emptyList() | 零内存 |
| 错误 | 表现 | 解决 |
|---|---|---|
| 策略遗漏 | 某分支无匹配策略 | 添加DefaultStrategy兜底 |
| supports错误 | 策略匹配失败 | 单元测试验证 |
| 策略冲突 | 多个策略匹配 | 用@Order控制优先级 |
| 忘记注入 | NullPointerException | 添加@Autowired |
继承vs组合:优先组合,继承易导致语义错误和内存浪费
过度设计:只出现1-2次的if-else保持简单;行为无差异不需要策略;稳定不变直接用枚举switch
| 模板 | 路径 |
|---|---|
| 问题分析报告 | templates/analysis-report.md |
| 效果评估 | templates/evaluation.md |
| 策略模式重构 | templates/strategy-pattern.md |
| 应用案例 | templates/case-studies.md |