课程简介
逐字稿来源状态:Official FAQ confirms that 6.102 has no lectures and active-learning classtimes are not recorded.
reading-03 · 代码审查检验人的理解
已获用户批准接入 · 来源范围见本文说明。
来源:MIT 6.102 Spring 2026 · Reading 3: Code Review。依据官方阅读正文整理,非课堂逐字稿;下方示例与练习为本地自写教学示例。
核心概念与推理
代码审查通过他人的阅读发现缺陷、歧义与未来修改风险。DRY 的关键不是把所有相似文本合并,而是减少同一知识的重复表示。注释应记录规格和非显然假设,变量应只有一个用途,常量应表达设计决定。尽早失败可以缩短错误传播距离;避免全局可变状态可缩小推理范围。返回值比打印结果更便于复用,重构则在不改变外部行为的前提下改善内部结构。
具体示例
function countLong(words: ReadonlyArray<string>): number {
return words.filter(w => w.length > 8).length;
}
console.log(countLong(["construction"]));统计函数与控制台展示分离。调用方可把结果用于界面、日志或进一步计算,而不必修改统计逻辑。阈值是否应命名或参数化取决于它代表的领域规则。
关键机制补充
审查应区分可行为保持的重构与改变契约的修改。提取函数前先确认参数、副作用与返回值,重命名后核查全部调用点,消除重复时保留每条领域规则的意义。全局常量与全局可变变量风险不同:问题主要来自分散写入使读者无法限定状态来源。
常见误区
只检查格式而忽略规格;注释机械复述语句;为去掉几行重复制造难懂的万能抽象。
练习与检查点
审查一个日期计算函数:指出魔法数字、重复规则和输入假设,给出保持行为的重构步骤。
检查答案时必须写清前提、推导和一个反例;仅给出术语名称不足以说明理解。可回到官方文中的 reading exercises 检验,再记录与自己最初判断的差异。
原文阅读范围
Code review, Smelly example #1, Don’t repeat yourself (DRY), Comment where needed, Fail fast, Avoid magic numbers, One purpose for each variable, Smelly example #2, Use good names, Use whitespace and punctuation to help the reader, Smelly example #3, Don’t use global variables, Functions should return results, not print them, Avoid special-case code, Code at the right length, Refactoring, Summary。
资料与边界
完整官方阅读通过上方链接查看;作业、项目及考试见 软件工程学习入口。官方 录像说明 明确:本课不设概念讲授式 lectures,课堂用于主动练习且不录像。概念材料以交互阅读提供,因此本单元不适用课堂逐字稿,也没有生成时间轴。
让另一个人读懂代码,才是审查的起点
已获用户批准接入 · 来源范围见本文说明。
来源:MIT 6.102 Spring 2026 · Reading 3: Code Review。依据官方阅读正文整理,非课堂逐字稿;下方示例与练习为本地自写教学示例。
从一个具体问题开始
一段函数能正确打印长单词数量,但页面组件需要的是一个数字。开发者只好复制它并去掉打印。原来的实现把计算与展示绑定,迫使后来的修改重复知识。
看清问题背后的结构
代码审查通过他人的阅读发现缺陷、歧义与未来修改风险。DRY 的关键不是把所有相似文本合并,而是减少同一知识的重复表示。注释应记录规格和非显然假设,变量应只有一个用途,常量应表达设计决定。尽早失败可以缩短错误传播距离;避免全局可变状态可缩小推理范围。返回值比打印结果更便于复用,重构则在不改变外部行为的前提下改善内部结构。
用一个小例子检验理解
function countLong(words: ReadonlyArray<string>): number {
return words.filter(w => w.length > 8).length;
}
console.log(countLong(["construction"]));统计函数与控制台展示分离。调用方可把结果用于界面、日志或进一步计算,而不必修改统计逻辑。阈值是否应命名或参数化取决于它代表的领域规则。
关键机制补充
审查应区分可行为保持的重构与改变契约的修改。提取函数前先确认参数、副作用与返回值,重命名后核查全部调用点,消除重复时保留每条领域规则的意义。全局常量与全局可变变量风险不同:问题主要来自分散写入使读者无法限定状态来源。
把概念放回工程决策
审查可以从三个问题开始:错误能否尽早发现、读者能否看出意图、合理变化会影响几处。意见应说明具体后果,区分行为错误与个人偏好。
容易走偏的地方是:只检查格式而忽略规格;注释机械复述语句;为去掉几行重复制造难懂的万能抽象。这些问题不能通过记住一个术语自动解决,需要用具体调用者、输入和状态来检查。
亲手做一次
审查一个日期计算函数:指出魔法数字、重复规则和输入假设,给出保持行为的重构步骤。
先独立写下判断,再对照官方阅读;这篇文章是阅读解释和练习入口,未包含原课堂的互动、时间轴或未公开内容。
中文逐字稿
Official FAQ confirms that 6.102 has no lectures and active-learning classtimes are not recorded.
英文逐字稿
Official FAQ confirms that 6.102 has no lectures and active-learning classtimes are not recorded.