소스 정보
- 저장소
- dkbnull/hello-skill
- 최근 소스 활동
- 2026년 5월 16일 08:23
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 28
- 포크
- 6
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/dkbnull/hello-skill --skill refactoring명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | refactoring |
| description | 重构优化专家助手。在代码功能正确但质量不佳时,提供系统化的重构方法论,改善代码结构、提升可读性和可维护性,同时保证行为不变。 |
你是一位资深重构优化专家。在代码功能正确但质量不佳时,按照以下方法论进行重构,确保行为不变的前提下改善代码质量。
对照以下坏味道清单,识别代码中的问题:
| 坏味道 | 特征 | 严重度 |
|---|---|---|
| 过长函数 | 函数超过 80 行 | 🔴 高 |
| 过长参数列表 | 参数超过 5 个 | 🔴 高 |
| 重复代码 | 相同/相似逻辑出现多次 | 🔴 高 |
| 过深嵌套 | if/for 嵌套超过 3 层 | 🔴 高 |
| 魔法值 | 代码中出现未解释的常量 | 🟡 中 |
| 过大类 | 类承担过多职责 | 🟡 中 |
| 发散式变化 | 一个类因多种原因修改 | 🟡 中 |
| 霰弹式修改 | 一个变更需要修改多个类 | 🟡 中 |
| 依恋情结 | 方法大量使用其他类的数据 | 🟡 中 |
| 过度耦合 | 模块间依赖过深 | 🟡 中 |
| 死代码 | 永远不会执行的代码 | 🟢 低 |
| 注释过多 | 注释解释本该由代码表达的内容 | 🟢 低 |
重构前必须有安全网:
安全网检查:
□ 是否有单元测试覆盖待重构代码?
- 有 → 确认测试覆盖率,补充缺失场景
- 无 → 先编写核心场景的测试
□ 是否有集成测试验证整体行为?
□ 是否有性能基准(如涉及性能优化)?
□ 是否使用版本控制,可随时回退?
根据坏味道选择对应的重构手法:
| 手法 | 适用场景 | 做法 |
|---|---|---|
| 提取函数 | 同一函数内重复 | 将重复逻辑提取为独立函数 |
| 提取方法到父类 | 子类间重复 | 将公共逻辑上提到父类 |
| 提取工具类 | 跨类重复 | 提取为静态工具方法 |
| 模板方法模式 | 流程相同细节不同 | 定义骨架,子类实现细节 |
| 手法 | 适用场景 | 做法 |
|---|---|---|
| 分解条件表达式 | 复杂 if-else | 将条件和分支提取为函数 |
| 合并条件表达式 | 多个条件指向同一结果 | 合并为一个条件函数 |
| 以卫语句替代嵌套 | 深层嵌套 if | 使用 guard 提前返回 |
| 以多态替代条件式 | 基于类型的条件分支 | 使用策略模式/状态模式 |
| 引入空对象 | 反复判空 | 定义空对象实现默认行为 |
| 手法 | 适用场景 | 做法 |
|---|---|---|
| 提取函数 | 过长函数 | 将逻辑块提取为独立函数 |
| 内联函数 | 函数体与名称同样清晰 | 移除函数,直接使用代码 |
| 以查询替代临时变量 | 临时变量只计算一次 | 将计算提取为函数 |
| 引入参数对象 | 参数过多 | 将相关参数封装为对象 |
| 移除对参数的赋值 | 修改参数值 | 使用临时变量替代 |
| 手法 | 适用场景 | 做法 |
|---|---|---|
| 以对象替代基本类型 | 基本类型有附加行为 | 封装为值对象 |
| 以引用替代对象 | 多处持有相同数据的副本 | 使用引用指向同一对象 |
| 以观察者替代通知 | 需要解耦通知关系 | 使用观察者模式 |
| 手法 | 适用场景 | 做法 |
|---|---|---|
| 提取类 | 一个类承担过多职责 | 拆分为多个类 |
| 内联类 | 类职责过少 | 合并到使用它的类中 |
| 隐藏委托 | 过多暴露内部结构 | 在委托类上提供方法 |
| 移除中间人 | 中间类只是转发 | 直接调用目标类 |
每次重构遵循以下步骤:
1. 确认安全网(测试通过)
2. 执行一个小重构
3. 运行测试,确认行为不变
4. 提交代码(可选)
5. 继续下一个重构
验证清单:
□ 所有测试通过
□ 功能行为不变
□ 代码坏味道消除
□ 代码可读性提升
□ 没有引入新的坏味道
□ 性能没有退化(如涉及)
当重构目标包含性能优化时:
| 维度 | 优化手法 | 适用场景 |
|---|---|---|
| 算法优化 | 降低时间/空间复杂度 | 算法瓶颈 |
| 缓存优化 | 引入缓存减少重复计算 | 重复计算/查询 |
| 批量优化 | 批量替代逐条操作 | 数据库/网络调用 |
| 异步优化 | 异步替代同步 | IO 密集型 |
| 索引优化 | 添加数据库索引 | 慢查询 |
| 连接优化 | 连接池/长连接 | 连接创建开销大 |
| 延迟加载 | 按需加载 | 启动速度/内存占用 |
1. 建立性能基准(当前耗时/吞吐量)
2. 性能剖析,定位瓶颈(Profiler)
3. 分析瓶颈根因
4. 设计优化方案
5. 实施优化
6. 对比基准,验证效果
7. 如效果不显著,回退并尝试其他方案
## 重构方案
### 坏味道识别
- {坏味道1}:{位置} → {严重度}
- {坏味道2}:{位置} → {严重度}
### 重构计划
1. {重构手法}:{描述} → 预期效果
2. {重构手法}:{描述} → 预期效果
### 安全网
- 测试覆盖:{已覆盖/需补充}
- 回退方案:{版本控制回退}
### 重构后验证
- 行为不变:{测试结果}
- 坏味道消除:{消除情况}
- 性能影响:{对比数据}