Commandgeneral
/review Command
对以下代码进行全面审查:$ARGUMENTS
代码审查
对以下代码进行全面审查:$ARGUMENTS
审查维度
1. 功能正确性 ✅
- [ ] 代码实现了预期功能吗?
- [ ] 所有边界条件都处理了吗?
- [ ] 错误处理是否完善?
- [ ] 业务逻辑是否正确?
2. 代码质量 📝
- [ ] 代码是否易于理解?
- [ ] 命名是否清晰表达意图?
- [ ] 是否有重复代码?
- [ ] 函数/类是否遵循单一职责?
- [ ] 抽象层次是否合适?
3. 测试覆盖 🧪
- [ ] 是否有对应的测试?
- [ ] 测试是否覆盖主要场景?
- [ ] 测试是否包含边界条件?
- [ ] 测试是否易于理解和维护?
4. 性能考虑 ⚡
- [ ] 是否有明显的性能问题?
- [ ] 算法复杂度是否合理?
- [ ] 是否有不必要的数据库查询?
- [ ] 是否有内存泄漏风险?
5. 安全性 🔒
- [ ] 是否有 SQL 注入风险?
- [ ] 是否有 XSS 攻击风险?
- [ ] 敏感信息是否得到保护?
- [ ] 权限检查是否完善?
6. 可维护性 🔧
- [ ] 代码结构是否清晰?
- [ ] 依赖关系是否合理?
- [ ] 是否容易扩展?
- [ ] 文档是否完整?
审查检查清单
代码风格
命名规范:
- [ ] 变量名描述性且一致
- [ ] 函数名以动词开头
- [ ] 类名使用名词
- [ ] 常量使用大写蛇形
代码组织:
- [ ] 导入语句有序分组
- [ ] 相关代码放在一起
- [ ] 公共方法在前,私有在后
- [ ] 辅助函数适当提取
最佳实践
DRY (Don't Repeat Yourself):
- [ ] 无重复代码块
- [ ] 共同逻辑已提取
- [ ] 配置集中管理
SOLID 原则:
- [ ] 单一职责 (S)
- [ ] 开闭原则 (O)
- [ ] 里氏替换 (L)
- [ ] 接口隔离 (I)
- [ ] 依赖倒置 (D)
防御性编程:
- [ ] 输入验证
- [ ] 空值检查
- [ ] 类型检查
- [ ] 边界处理
具体审查点
JavaScript/TypeScript
// ❌ 不好的例子
function calc(x, y) {
return x * 0.1 + y * 0.2;
}
// ✅ 好的例子
const TAX_RATE = 0.1;
const SERVICE_FEE_RATE = 0.2;
function calculateTotalCost(baseCost, serviceCost) {
const tax = baseCost * TAX_RATE;
const serviceFee = serviceCost * SERVICE_FEE_RATE;
return baseCost + tax + serviceCost + serviceFee;
}
错误处理
// ❌ 静默失败
try {
doSomething();
} catch (e) {
// 忽略错误
}
// ✅ 正确处理
try {
doSomething();
} catch (error) {
logger.error('操作失败', {
error: error.message,
stack: error.stack,
context: { /* 相关上下文 */ }
});
// 适当的错误恢复或向上传播
throw new BusinessError('操作失败,请重试', error);
}
异步处理
// ❌ 回调地狱
getData(function(a) {
getMoreData(a, function(b) {
getMoreData(b, function(c) {
console.log(c);
});
});
});
// ✅ 使用 async/await
async function fetchAllData() {
try {
const a = await getData();
const b = await getMoreData(a);
const c = await getMoreData(b);
return c;
} catch (error) {
handleError(error);
}
}
审查反馈模板
严重问题 🔴
**[严重]** 问题描述
**位置**: `文件名:行号`
**问题**:
[详细描述问题]
**影响**:
[说明可能的后果]
**建议方案**:
```language
// 建议的代码
```
**参考**: [相关文档或最佳实践链接]
一般问题 🟡
**[建议]** 改进建议
**位置**: `文件名:行号`
**当前代码**:
```language
// 当前实现
```
**建议改进**:
```language
// 改进后的代码
```
**理由**: [解释为什么这样更好]
优秀实践 🟢
**[赞]** 优秀实践
**位置**: `文件名:行号`
做得很好的地方:
- [具体的优点]
这种做法值得在项目中推广。
审查工具命令
自动化检查
# 运行所有自动化检查
npm run lint
npm run typecheck
npm test
npm run test:coverage
# 检查代码复杂度
npm run complexity
# 安全漏洞扫描
npm audit
Git 相关
# 查看改动的文件
git diff --name-only
# 查看具体改动
git diff [文件名]
# 查看提交历史
git log --oneline -10
审查心态
✅ 正确的审查态度
- 建设性 - 提供解决方案,不只是指出问题
- 具体 - 给出具体的代码示例
- 谦虚 - 可能是你理解有误
- 学习 - 从他人的代码中学习
- 赞赏 - 认可做得好的地方
❌ 避免的行为
- 人身攻击 - 评论代码,不评论人
- 吹毛求疵 - 关注重要问题
- 个人偏好 - 区分规范和偏好
- 延迟回复 - 及时提供反馈
- 模糊评论 - 要具体和可操作
审查优先级
P0 - 必须修复
- 🐛 Bug 和逻辑错误
- 🔒 安全漏洞
- 💥 会导致系统崩溃的问题
- 📊 严重的性能问题
P1 - 强烈建议
- 📝 违反团队编码规范
- 🔄 明显的代码重复
- 🏗️ 架构问题
- 🧪 缺少关键测试
P2 - 建议改进
- ✨ 代码可读性改进
- 📚 文档补充
- 🎨 代码风格统一
- ⚡ 性能优化机会
审查后行动
作者响应
- 理解所有反馈
- 询问不清楚的地方
- 解释设计决策(如需要)
- 实施必要的修改
- 重新请求审查
审查者跟进
- 验证修改是否完成
- 确认问题是否解决
- 批准或继续讨论
- 记录学到的经验
持续改进
团队学习
- 定期分享审查中发现的模式
- 更新团队编码规范
- 创建代码示例库
- 组织技术分享会
个人成长
- 记录常见问题
- 学习新的最佳实践
- 提升审查技能
- 分享知识和经验
记住
"代码审查的目的不是找茬,而是:
- 🎯 确保代码质量
- 📚 知识共享
- 🤝 团队协作
- 📈 持续改进"
好的代码审查能让整个团队受益,不仅提升代码质量,更重要的是促进知识传播和团队成长。