بنقرة واحدة
code-refactor
该skill没有执行文件,为操作指引:如何重构
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
该skill没有执行文件,为操作指引:如何重构
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
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 |