用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/zhangloveyan/backend-skill --skill proj-refactor命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | proj-refactor |
| description | 代码重构指南和常见重构模式。用于改善代码质量、消除代码坏味道、优化代码结构。 |
Step 0: 校验任务文档 → Step 1: 识别问题 → Step 2: 确定范围 → Step 3: 编写测试 → Step 4: 小步重构 → Step 5: 验证
同步任务文档:
问题: 方法超过 50 行
重构方法: 提取方法
// ✗ 重构前
public void processOrder(Order order) {
// 50+ 行代码...
}
// ✓ 重构后
public void processOrder(Order order) {
validateOrder(order);
calculatePrice(order);
saveOrder(order);
sendNotification(order);
}
问题: 类超过 500 行,职责过多
重构方法: 提取类
// ✗ 重构前
public class UserService {
// 用户管理 + 订单管理 + 支付管理...
}
// ✓ 重构后
public class UserService { /* 用户管理 */ }
public class OrderService { /* 订单管理 */ }
public class PaymentService { /* 支付管理 */ }
问题: 相同代码出现多处
重构方法: 提取公共方法
// ✗ 重构前
public void methodA() {
// 重复代码块
}
public void methodB() {
// 重复代码块
}
// ✓ 重构后
private void commonMethod() {
// 公共代码块
}
public void methodA() {
commonMethod();
}
public void methodB() {
commonMethod();
}
问题: 方法参数超过 4 个
重构方法: 引入参数对象
// ✗ 重构前
public void createUser(String name, String phone, String email,
String address, Integer age, Integer status) {}
// ✓ 重构后
public void createUser(UserCreateRequest request) {}
问题: 硬编码的数字或字符串
重构方法: 提取常量或枚举
// ✗ 重构前
if (status == 1) { }
if (type.equals("VIP")) { }
// ✓ 重构后
if (status == StatusEnum.ENABLE.getCode()) { }
if (type.equals(UserType.VIP)) { }
问题: if/for 嵌套超过 3 层
重构方法: 提前返回、提取方法
// ✗ 重构前
public void process(User user) {
if (user != null) {
if (user.isEnabled()) {
if (user.hasPermission()) {
// 业务逻辑
}
}
}
}
// ✓ 重构后
public void process(User user) {
if (user == null) return;
if (!user.isEnabled()) return;
if (!user.hasPermission()) return;
// 业务逻辑
}
问题: 用注释解释复杂代码
重构方法: 让代码自解释
// ✗ 重构前
// 检查用户是否有效
if (u != null && u.getS() == 1 && u.getD() == 0) { }
// ✓ 重构后
if (user.isValid()) { }
// User 类中
public boolean isValid() {
return this.status == StatusEnum.ENABLE && this.delFlag == 0;
}