Skip to content

代码开发

本章提供使用 Codex 进行代码开发的核心模式。内容分层组织,从基础工作流到高级协作模式。

基础工作流

1. 从类型/接口开始(推荐初学者)

先定义数据形状,再生成实现:

typescript
interface UserService {
  findById(id: string): Promise<User>
  create(data: CreateUserDTO): Promise<User>
  update(id: string, data: UpdateUserDTO): Promise<User>
  delete(id: string): Promise<void>
}

// Codex 会根据接口生成实现

为什么有效:类型为 Codex 提供了明确的约束,减少生成不匹配代码的概率。

2. 提供测试用例

> 为这个排序函数编写实现,需通过以下测试:
> - [3,1,2] → [1,2,3]
> - [] → []
> - [1] → [1]
> - 稳定性测试...

3. 小步迭代

核心原则

每次只要求 Codex 做一件事,确认正确后再进行下一步。这比一次性要求"实现整个功能"的成功率高得多。

步骤 1: 创建数据模型和类型定义     → 验证类型检查通过
步骤 2: 实现核心业务逻辑           → 运行单元测试通过
步骤 3: 添加错误处理               → 验证边界情况
步骤 4: 优化性能                   → 运行基准测试确认

代码审查

审查清单

  • [ ] 边界条件处理
  • [ ] 错误处理完整性
  • [ ] 类型安全性
  • [ ] 性能隐患(N+1、内存泄露等)
  • [ ] 安全漏洞(注入、泄露等)
  • [ ] 代码可读性
  • [ ] 测试覆盖度

审查指令模板

> 审查 @src/auth/login.ts,重点关注:
> 1. 安全性 — 是否有注入漏洞、明文存储密码
> 2. 性能 — 是否有不必要的重复计算
> 3. 错误处理 — 异常情况是否都被正确捕获和处理

审查 AI 生成的代码(进阶)

当 Codex 帮你生成代码后,自我审查同样重要:

> 刚才你生成的代码:
> - 是否引入了不必要的依赖?
> - 是否有更简洁的实现方式?
> - 边界条件是否都覆盖?
> 请先自我审查,然后应用你的改进建议

TDD 工作流

bash
# 1. 写测试
> 编写用户认证的测试用例

# 2. 确认测试失败(红)
> 运行测试

# 3. 实现功能(绿)
> 实现最小功能让测试通过

# 4. 确认测试通过
> 运行测试

# 5. 重构
> 重构代码优化结构

# 6. 确认通过
> 再次运行测试

注意事项

Codex 有时会直接编写实现代码而非先写测试。在使用 TDD 时,明确告诉它"先写测试,不要先写实现"。

文档生成

让 Codex 自动为代码生成文档:

> 为这个公共 API 生成 JSDoc 注释
> 为这个模块创建 README 文档
> 为新同事生成代码走查文档

高级模式

模式 1:Codex 写代码 + 人类审查

最适合日常开发的模式:

1. 向 Codex 描述需求和约束
2. Codex 生成初始实现
3. 人类审查逻辑正确性
4. 运行测试验证
5. 人类做最终调整

模式 2:人类设计 + Codex 实现

最适合有明确设计的情况:

1. 人类设计架构和接口
2. 将设计转化为 Codex 可执行的规格
3. Codex 按规格填充实现
4. 人类对结果做微调

模式 3:结对编程

最适合探索性工作:

> 我将和你一起实现这个功能
> 我先描述我的思路,你提供反馈和替代方案
> 我们逐步推进,每一步讨论后再继续

模式 4:测试驱动 + Codex 补全

最适合风险敏感的场景:

1. 人类编写完整的测试用例
2. Codex 只负责编写让测试通过的最简实现
3. 人类审查后 Codex 进行代码优化

避免常见陷阱

陷阱 1:过度信任

❌ 直接提交 Codex 生成的代码而不审查
✅ 始终审查生成的代码后再提交

陷阱 2:过于复杂的提示词

❌ "重构整个认证系统,包括前端、后端、数据库迁移"
✅ "第一步:重构 src/auth/ 中的 token 验证逻辑,其他部分暂时不动"

陷阱 3:忽略错误处理

❌ "实现用户注册 API"
✅ "实现用户注册 API,包括邮箱格式验证、密码强度检查、数据库约束冲突处理"

陷阱 4:不运行测试

❌ Codex "写完了"就直接提交
✅ 始终运行 lint → typecheck → test → build 确认无回归

下一步

基于 Codex CLI v0.142.5