Skip to content

Latest commit

 

History

History
160 lines (101 loc) · 6.66 KB

File metadata and controls

160 lines (101 loc) · 6.66 KB

← 本周导航 · 模块首页 · 术语表

Week 7 中文导读:AI 代码审查

代码写完不是终点

在专业开发中,代码写完只是开始。代码要经过"审查"才能合并到主项目中。这个过程就像出版社的编辑审稿——作者写完初稿后,编辑会检查逻辑、纠正错误、提出改进建议。

这周你会学习代码审查的方法论,以及 AI 如何辅助这个过程。


核心概念

分支(Branch)

想象你在写一本书的某一章。你不会直接在原稿上改,而是先复印一份,在复印件上修改。满意后再替换原稿。Git 的"分支"就是这个概念——创建一个代码的"复印件",在上面自由修改,不影响正式版本。

实际操作起来大概是这样:

# 创建一个新分支,名字叫 feature/add-search
git checkout -b feature/add-search

# 在这个分支上随便改,不会影响主分支
# ... 写代码 ...

# 改完了,提交
git add .
git commit -m "添加搜索功能"

拉取请求(Pull Request / PR)

当你改好了复印件上的章节,你需要"申请"把修改合并回原稿。PR 就是这个申请过程——你把修改提交出来,让别人(或 AI)来检查。

一个 PR 通常包含:

  • 你改了什么:代码差异(diff),一行一行地显示哪些代码被添加、删除、修改了
  • 为什么要改:PR 的描述部分,解释这次修改的目的和思路
  • 怎么验证改得对不对:跑了什么测试、手动检查了什么

写好 PR 描述是一个很容易被忽视但非常重要的技能。一个好的 PR 描述能让审查者快速理解你的意图,大大加快审查速度。

代码审查(Code Review)

就是编辑审稿的过程。审阅者会检查这几个方面:

  • 正确性:逻辑对不对?边界条件(edge case)处理了吗?
  • 安全性:有没有安全隐患?(这就是 Week 6 学的东西派上用场的地方)
  • 可读性:别人能看懂吗?变量名清楚吗?注释够不够?
  • 性能:会不会很慢?有没有不必要的数据库查询?
  • 测试:有没有测试覆盖?测试写得合理吗?

代码审查不是为了挑刺,而是为了保证代码质量、分享知识、减少 bug。很多经验丰富的开发者都说,他们从代码审查中学到的东西比写代码本身还多。

AI 代码审查:Graphite Diamond

Graphite 是一个代码审查工具,它的 AI 功能 Diamond 可以自动对你的 PR 进行审查。它会像一个经验丰富的审查者一样,逐行检查你的代码,提出问题和建议。

这周练习的核心就是:你先自己审查,然后让 AI 审查,最后对比两者的发现。这个对比过程会让你清楚地看到 AI 审查的优势和局限。


任务导读

原始作业要求你完成 docs/TASKS.md 中的任务。对于每个任务,流程是:

  1. 创建一个新分支 —— 每个任务用一个独立的分支
  2. 用 AI 工具实现任务 —— 用一次提示完成(one-shot),不要反复修改提示
  3. 自己逐行审查代码 —— 这是最重要的一步,记录你发现的每个问题
  4. 创建 PR —— 写清楚描述、测试结果、权衡取舍
  5. 用 Graphite Diamond 做 AI 审查 —— 看看 AI 怎么评价你的代码
  6. 对比你和 AI 的发现 —— 记录在 writeup 里

关于 Graphite 的注册:课程提供了教育优惠码(CS146S),可以免费使用。如果你不想注册 Graphite,也可以直接让 Claude 或其他 AI 工具来审查你的 PR diff,核心学习目标是一样的。


方法论重于工具

虽然本周使用 Graphite,但核心学习的是"代码审查的方法论"。这套方法论适用于任何工具:

  • GitHub 自带的 PR review 功能
  • GitLab 的 Merge Request review
  • 直接让 Claude 帮你审查代码(把 diff 贴给它就行)
  • 甚至是两个人坐在一起看代码(pair review)

不管用什么工具,审查的思路是一样的:正确性、安全性、可读性、性能、测试。


与主题线的连接

Week 6 是"检查安全",Week 7 是"检查质量"。两者合在一起,构成了 Agentic Coding 中"验证 AI 输出"的完整流程。记住:AI 帮你写代码只是第一步,审查和验证才是专业开发者的核心能力。

这也是为什么课程要你先自己审查、再让 AI 审查——不是因为 AI 审查不好,而是你需要先建立自己的审查能力,才能判断 AI 的审查结果靠不靠谱。


环境准备

1. 注册 Graphite

Graphite 是一个代码审查工具,本周用它的 AI 审查功能 Diamond。

  1. 注册: https://app.graphite.dev/signup
  2. 注册后可领取 30 天免费试用
  3. 30 天后可用 CS146S 代码申请教育免费版

2. 查看任务列表

本周的具体任务在 week7/docs/TASKS.md 文件中。在开始前先阅读该文件,了解需要实现的功能。

3. 选择 AI 编码工具

你可以使用任何 AI 编码工具来完成任务:Cursor、Copilot、Claude Code 等。


练习任务

week7/docs/TASKS.md 中完成 4 个任务。每个任务按以下流程执行:

每个任务的 6 步流程

  1. 创建分支:为每个任务创建一个独立的 Git 分支
  2. AI 实现:使用你选择的 AI 工具,通过一次提示(1-shot prompt)实现任务
  3. 手动审查:逐行检查 AI 生成的代码。发现问题就修复,添加说明性的 commit message。你也可以和同伴互相审查。
  4. 创建 PR:为任务创建一个 Pull Request,包含:
    • 问题描述和你的方法
    • 测试总结(运行的命令和结果)
    • 注意事项、权衡和后续待办
  5. AI 审查:使用 Graphite Diamond 对 PR 进行 AI 辅助的代码审查
  6. 记录对比:在笔记中记录你和 AI 各自发现了什么

成果要求

4 个 PR,每个包含:

  • 清晰的 PR 描述
  • 相关 commit/issue 的链接
  • Graphite Diamond AI 审查评论(在 PR 上可见)

反思总结

  • 你在手动审查中通常关注哪些方面(正确性、性能、安全、命名、测试、API 设计、文档等)
  • 对比你的审查 vs Graphite 的 AI 审查
  • AI 审查在什么时候比你做得好/差(举具体例子)
  • 你对 AI 审查的信任度,以及什么时候该依赖 AI 审查

自检清单

  • 理解分支、PR、代码审查的基本概念
  • 完成了至少 4 个任务的 PR
  • 每个 PR 都有你的手动审查记录
  • 对比了人工审查和 AI 审查的异同
  • 能说出 AI 审查的优势和局限

开始 Week 8 →