module6
60 分钟

编码规范制定

学习进度

当前模块0/6 课
总进度0/36 课
学习时长0 分钟

学习目标

  • 编写团队级 codex.yaml 配置文件
  • 制定 AI 代码审查标准
  • 配置自动化规范检查
  • 建立规范演进机制

502 编码规范制定

用 codex.yaml 制定团队标准,让 AI 生成代码始终符合团队规范

学习目标

完成本课程后,你将能够:

一、codex.yaml 配置文件

什么是 codex.yaml

`codex.yaml` 是 Codex CLI 的项目级规则文件,Codex 在生成代码时会自动遵循其中的约定。

完整配置示例

# codex.yaml — Team Coding Standards
# 放置于项目根目录,Codex 自动读取

project:
  name: "TaskFlow"
  language: "typescript"
  framework: "next.js"

rules:
  naming:
    components: "PascalCase"
    functions: "camelCase"
    constants: "UPPER_SNAKE_CASE"
    files: "kebab-case"
    typeFiles: "*.types.ts"
    testFiles: "*.test.ts"

  typescript:
    strictMode: true
    noAny: true
    preferInterface: false  # 使用 type
    explicitReturnType: true  # 函数显式返回类型
    noTypeAssertion: false  # 允许 as 断言

  react:
    componentStyle: "functional"
    propsType: "interface"
    preferNamedExport: true
    noDefaultExport: true
    stateManagement: "hooks"
    cssApproach: "tailwind-css"

  api:
    pattern: "RESTful"
    versionPrefix: "/api/v1"
    responseFormat: "{ success: boolean, data: T, error?: string }"
    pagination: "cursor-based"

  database:
    orm: "prisma"
    idType: "cuid"
    timestamps: true
    softDelete: true

  testing:
    framework: "vitest"
    coverage:
      lines: 80
      branches: 70
      functions: 80
    testPattern: "describe → it → expect"
    mockStrategy: "prefer-spy"

  git:
    commitStyle: "conventional-commits"
    branchPrefix:
      feature: "feat/"
      bugfix: "fix/"
      hotfix: "hotfix/"
    prTitleFormat: "[TYPE] description"

  errorHandling:
    apiErrors: "AppError class"
    frontendErrors: "ErrorBoundary + Toast"
    logging: "pino"

二、代码审查标准

AI 生成代码的质量门禁

代码审查检查清单(AI 生成代码专用):

□ 类型安全
  - 没有 any 类型(除非有充分理由)
  - 没有 @ts-ignore 或 @ts-expect-error
  - 所有 async 函数有 try/catch

□ 安全性
  - 没有硬编码凭据
  - 用户输入经过验证和转义
  - API 请求通过了认证中间件

□ 性能
  - 没有循环内 await(改为 Promise.all)
  - 数据库查询使用了 select 而非 include
  - 前端没有不必要的 re-render

□ 可维护性
  - 函数不超过 50 行
  - 文件不超过 300 行
  - 复杂逻辑有注释说明

Review 模板

## AI Code Review 模板

### PR 信息
- **分支:** feat/task-kanban-dnd
- **AI 生成比例:** 约 80%
- **修改文件数:** 12

### AI 生成部分审查重点
1. [ ] 错误处理是否完整?(AI 常忽略边界条件)
2. [ ] 是否有 N+1 查询风险?
3. [ ] 状态管理逻辑是否一致?
4. [ ] 类型定义是否正确对应 API 响应?

### 人工修改部分
无额外修改

### 审查结论
- [ ] 批准
- [ ] 需要修改(见评论)
- [ ] 拒绝(理由):

三、自动化规范检查

规范检查工具链

代码提交时自动检查:
├── ESLint      → 代码风格和潜在错误
├── Prettier    → 代码格式化
├── TypeScript  → 类型检查 (tsc --noEmit)
├── commitlint   → Commit 信息格式
└── Codex       → /review 自动审查

Husky + lint-staged 配置

// package.json
{
  "lint-staged": {
    "*.{ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.prisma": [
      "prettier --write"
    ]
  }
}
# .husky/pre-commit
npx lint-staged
npx tsc --noEmit

# .husky/commit-msg
npx --no -- commitlint --edit $1

CI 规范门禁

# .github/workflows/lint.yml
name: Code Standards

on: [pull_request]

jobs:
  standards:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci
      - run: npx eslint . --max-warnings 0
      - run: npx prettier --check .
      - run: npx tsc --noEmit
      - run: npx vitest run --coverage

四、规范演进机制

规范生命周期

提议(RFC)
  → 团队讨论(1 周)
    → 试行(2 周,可选参与)
      → 投票(多数通过)
        → 正式发布(更新 codex.yaml)
          → 回顾(季度)

RFC 模板

# RFC: {提案标题}

## 背景
{为什么需要这个规范变更}

## 提案
{具体的规范变更描述}

## 影响范围
- 影响文件数:约 XX 个
- 影响开发流程:{描述}

## 迁移方案
{如何从旧规范迁移到新规范}

## 试行结果
{试行期的反馈和数据}

## 投票
- [ ] 同意
- [ ] 反对(理由)
- [ ] 弃权

规范评审日历

频率活动内容
每周规范违规复盘Top 5 高频违规及原因
每月规范痛点收集哪些规范影响效率
每季度规范大版本更新新增/修改/废弃规范
每年规范体系重审整体有效性评估

五、实战练习

练习 1:编写团队 codex.yaml

请为你的团队项目编写完整的 codex.yaml,至少包含:
- naming 规范
- TypeScript 规则
- API 设计约定
- 测试要求
- Git 提交规范

练习 2:设置自动化检查

为团队项目配置:
- Husky pre-commit hooks
- commitlint
- CI 规范门禁 workflow

练习 3:发起规范 RFC

针对你团队当前最大的规范痛点,撰写一份 RFC 提案

六、本课总结

**核心要点:**

  • codex.yaml 是 Codex 行为的「宪法」,写得越细,生成代码越一致
  • AI 生成代码审查关注点不同于人工代码:错误处理、N+1、边界条件
  • 自动化检查(ESLint + TypeScript + CI)形成质量门禁,不以人意志为转移
  • 规范要演进:RFC 流程 + 试行期 + 投票 + 季度回顾
  • 好规范降低认知负担,坏规范成为开发阻碍——收集反馈是核心

**下一步:** 模块 503 — 权限与安全管理

下一模块