# Review Dimensions

> 本文档定义代码审查的 6 个维度及每个维度的检查点。

## 概述

代码审查分为 6 个维度，每个维度包含多个检查点。审查时应对每个维度进行评分和记录。

## 审查维度

### 1. Correctness (正确性)

**关注点**: 代码逻辑是否正确，边界条件是否处理，错误处理是否完善。

| 检查点 | 描述 | 严重性 |
|--------|------|--------|
| 边界条件 | 空、null、undefined、数组越界 | Critical |
| 错误处理 | try-catch、错误传播、用户反馈 | High |
| 类型安全 | 类型转换、类型断言、any 使用 | High |
| 数据验证 | 输入验证、输出校验 | High |
| 并发安全 | 竞态条件、死锁风险 | Medium |

**评分标准**:
- **9-10**: 无明显问题，处理完善
- **7-8**: 有小问题但不影响功能
- **5-6**: 存在潜在问题，需要修复
- **< 5**: 严重问题，必须修复

---

### 2. Readability (可读性)

**关注点**: 代码是否易于理解，命名是否清晰，注释是否恰当。

| 检查点 | 描述 | 严重性 |
|--------|------|--------|
| 命名规范 | 变量、函数、类名语义化 | Medium |
| 函数长度 | 单一职责，长度适中 | Medium |
| 复杂度 | 圈复杂度、嵌套层级 | Medium |
| 注释质量 | 解释"为什么"而非"是什么" | Low |
| 代码格式 | 缩进、空行、对齐 | Low |

**评分标准**:
- **9-10**: 代码如散文般清晰
- **7-8**: 大部分清晰，少量困惑点
- **5-6**: 需要额外时间理解
- **< 5**: 代码难以理解

---

### 3. Performance (性能)

**关注点**: 算法效率、资源使用、I/O 优化。

| 检查点 | 描述 | 严重性 |
|--------|------|--------|
| 算法复杂度 | 时间/空间复杂度合理 | High |
| 数据结构选择 | 使用合适的数据结构 | High |
| I/O 优化 | 减少网络/磁盘访问 | Medium |
| 缓存策略 | 适当使用缓存 | Medium |
| 资源释放 | 内存泄漏、连接关闭 | High |

**评分标准**:
- **9-10**: 性能优化充分
- **7-8**: 性能可接受，有小优化空间
- **5-6**: 存在明显性能问题
- **< 5**: 严重性能问题

---

### 4. Security (安全)

**关注点**: 注入风险、敏感数据、权限控制。

| 检查点 | 描述 | 严重性 |
|--------|------|--------|
| 注入风险 | SQL、命令、XSS 注入 | Critical |
| 敏感数据 | 密码、密钥、token 处理 | Critical |
| 权限控制 | 认证、授权检查 | High |
| 数据验证 | 输入净化、输出编码 | High |
| 依赖安全 | 已知漏洞的依赖 | Medium |

**评分标准**:
- **9-10**: 无明显安全问题
- **7-8**: 低风险问题
- **5-6**: 中等风险，需要修复
- **< 5**: 高风险问题，必须修复

---

### 5. Testing (测试)

**关注点**: 测试覆盖度、测试质量、测试可维护性。

| 检查点 | 描述 | 严重性 |
|--------|------|--------|
| 覆盖度 | 单元测试、集成测试覆盖 | High |
| 边界测试 | 边界条件、异常情况测试 | Medium |
| 断言质量 | 断言有意义、不脆弱 | Medium |
| 测试可读性 | 测试意图清晰 | Low |
| Mock/Stub | 适当使用测试替身 | Medium |

**评分标准**:
- **9-10**: 测试充分，质量高
- **7-8**: 测试覆盖主要场景
- **5-6**: 测试不足，需要补充
- **< 5**: 缺少测试

---

### 6. Architecture (架构)

**关注点**: 设计模式、分层结构、依赖管理。

| 检查点 | 描述 | 严重性 |
|--------|------|--------|
| 设计模式 | 适当使用设计模式 | Medium |
| 模块化 | 高内聚、低耦合 | High |
| 依赖方向 | 依赖倒置、循环依赖 | High |
| 接口设计 | 接口稳定、扩展点明确 | Medium |
| 一致性 | 与现有架构风格一致 | Medium |

**评分标准**:
- **9-10**: 架构清晰，易于扩展
- **7-8**: 架构合理，小问题
- **5-6**: 架构问题，需要重构
- **< 5**: 架构混乱

---

## 审查报告格式

### 单维度报告模板

```markdown
### Correctness: 7/10

**发现的问题**:

#### [H] Null pointer risk
- **位置**: `src/auth.ts:45`
- **问题**: 用户对象可能为 null，直接访问属性会崩溃
- **建议**:
```typescript
// 添加空检查
if (user) {
  return user.name;
}
return 'Anonymous';
```

#### [M] Missing error handling
- **位置**: `src/api.ts:78`
- **问题**: 网络请求没有错误处理
- **建议**: 添加 try-catch

**优点**:
- 边界条件检查完善
- 类型使用恰当
```

---

## 快速扫描检查点

快速扫描阶段只检查高优先级问题：

| 维度 | 高优先级检查点 |
|------|----------------|
| Correctness | 空指针、类型断言、未处理 Promise |
| Readability | 过长函数 (>50行)、过深嵌套 (>4层) |
| Performance | O(n²) 以上算法、循环中 I/O |
| Security | SQL 注入、XSS、硬编码密钥 |
| Testing | 关键路径缺少测试 |
| Architecture | 循环依赖、上帝对象 |

---

## 参考

- [Issue Classification](issue-classification.md)
- [Quality Standards](quality-standards.md)
