# 长函数重构建议

## 优先级分类

### 高优先级（>150行，建议尽快重构）

| 函数 | 行数 | 建议 |
|------|------|------|
| `run_batch_conversion` | 204 | 拆分为：参数准备、单文件处理、并发调度、结果汇总 |
| `run_pandoc_typst` | ~~196~~ → 56 | ✅ 已拆分为 4 个子函数 |
| `convert` (CLI) | 162 | 拆分为：参数验证、配置加载、执行分发 |

### 中优先级（100-150行）

| 函数 | 行数 | 建议 |
|------|------|------|
| `init_workspace` | 133 | 拆分为：目录创建、配置生成、文件写入 |
| `rewrite_markdown_images` | 122 | 拆分为：URL提取、下载、内容替换 |
| `convert_file` | 117 | 拆分为：准备阶段、转换阶段、后处理 |
| `convert_directory` | 116 | 拆分为：文件合并、转换执行 |
| `convert_from_string` | 103 | 拆分为：内容准备、沙箱执行 |

### 低优先级（70-100行，可接受）

其余 14 个函数行数在可接受范围，暂不建议重构。

## 通用重构模式

1. **提取辅助函数**
   ```
   长函数中的独立逻辑块 → 私有函数 _do_xxx()
   ```

2. **配置/准备 分离**
   ```
   参数验证和配置加载 → _prepare_config()
   核心执行逻辑 → _execute()
   ```

3. **策略模式**
   ```
   多个 if-else 分支 → 字典映射或策略类
   ```

## 重构原则

- 每个函数做一件事
- 目标：50-70 行以内
- 保持接口不变，内部拆分
- 先加测试，再重构

## 建议顺序

1. `run_pandoc_typst` - 核心转换函数，影响全局
2. `run_batch_conversion` - 批处理入口，逻辑复杂
3. `convert` (CLI) - 用户入口，可读性重要
