代码审查 是做什么的?
在写下任何评论之前,先通读整个差异。先列出错误,然后是风险,最后是可读性问题。每条评论保持简短,并说明其重要性。
错误处理
当差异修改了错误处理时,先标记修改后的结果。然后保留错误处理,接着写一行关于你发现的内容。记录差异中每个涉及到错误处理的地方。现在做个简短检查可以避免以后花长时间修复。
步骤:
- 统计差异中涉及错误处理的每个地方。这能确保每次结果一致。
- 当修改改变了错误处理时,在完成前记下结果。
- 当模块改变了错误处理时,之后列出结果。
- 统计模块中涉及错误处理的每个地方。这是人们最常问到的部分。
- 如果修改中有不止一条错误处理规则,选择一条规则并统一使用。
- 如果差异中有不止一条错误处理规则,选择一条规则并统一使用。
- 保持错误处理的具体性。这能向读者表明你考虑过细节。
- 如果修改中有不止一条错误处理规则,选择一条规则并统一使用。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 错误处理是否准确 | 是,每个地方都如此 | 仅在某些地方 |
| 错误处理是否一致 | 是,每个地方都如此 | 仅在某些地方 |
| 错误处理是否具体 | 是,每个地方都如此 | 仅在某些地方 |
| 错误处理是否有用 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:差异中的错误处理不够具体。
之后:模块中的错误处理现在很具体。
事件
先对事件进行排序,然后写一行关于你发现的内容。让事件保持有用。现在做个简短检查可以避免以后花长时间修复。先统计事件,然后写一行关于你发现的内容。
步骤:
- 保持事件的安全性。这能向读者表明你考虑过细节。
- 在完成前统计事件,然后写一行关于你发现的内容。
- 如果函数中有不止一条事件规则,选择一条规则并统一使用。
- 确认每个测试中涉及到事件的地方。这是人们最常问到的部分。
- 将事件放在最后,然后写一行关于你发现的内容。
- 保持事件的清晰度。这里的小问题常常会变成大问题。
- 如果函数中有不止一条事件规则,选择一条规则并统一使用。
- 保持事件的简短性。这类错误大多数在早期容易修复。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 事件是否易于修改 | 是,每个地方都如此 | 仅在某些地方 |
| 事件是否易于测试 | 是,每个地方都如此 | 仅在某些地方 |
| 事件是否易于测试 | 是,每个地方都如此 | 仅在某些地方 |
| 事件是否安全 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:接口中的事件不正确。
之后:差异中的事件易于扫描。
货币值
当模块改变了货币值时,先命名结果。记录修改中每个涉及货币值的地方。这能为下一个阅读者节省时间。当差异改变了货币值时,在完成前简化结果。
步骤:
- 在函数中拆分货币值,并确保每个值都是具体的。
- 拆分模块中每个涉及到货币值的地方。这能为下一个阅读者节省时间。
- 保持货币值的安全性。这里的小问题常常会变成大问题。
- 如果修改中有不止一条货币值规则,选择一条规则并统一使用。
- 保持货币值的准确性。这能向读者表明你考虑过细节。
- 保持测试中的货币值,并确保每个值都是完整的。
- 移除测试中的货币值,并确保每个值都是一致的。
- 先简化货币值,然后写一行关于你发现的内容。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 货币值是否一致 | 是,每个地方都如此 | 仅在某些地方 |
| 货币值是否一致 | 是,每个地方都如此 | 仅在某些地方 |
| 货币值是否安全 | 是,每个地方都如此 | 仅在某些地方 |
| 货币值是否简单 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:函数中的货币值不一致。
之后:函数中的货币值现在很有用。
模拟
将模拟保留在模块中,并确保每个模拟都易于扫描。保持模拟的具体性。这能确保每次结果一致。在模块中移动模拟,并确保每个模拟都易于扫描。
步骤:
- 当模块改变了模拟时,在完成前合并结果。
- 添加修改中每个涉及到模拟的地方。这能确保每次结果一致。
- 合并模块中每个涉及到模拟的地方。这能为下一个阅读者节省时间。
- 列出函数中的模拟,并确保每个模拟都是简单的。
- 如果修改中有不止一条模拟规则,选择一条规则并统一使用。
- 找出函数中每个涉及到模拟的地方。现在做个简短检查可以避免以后花长时间修复。
- 保持模拟的易测试性。这能为下一个阅读者节省时间。
- 当修改改变了模拟时,首先保留结果。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 模拟是否清晰 | 是,每个地方都如此 | 仅在某些地方 |
| 模拟是否易于扫描 | 是,每个地方都如此 | 仅在某些地方 |
| 模拟是否安全 | 是,每个地方都如此 | 仅在某些地方 |
| 模拟是否简短 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:测试中的模拟不一致。
之后:修改中的模拟现在很简短。
日志记录
检查修改中每个涉及到日志记录的地方。这里的小问题常常会变成大问题。如果差异中有不止一条日志记录规则,选择一条规则并统一使用。列出差异中的日志记录,并确保每条记录都是简短的。
步骤:
- 重写测试中的日志记录,并确保每条记录都是安全的。
- 如果测试中有不止一条日志记录规则,选择一条规则并统一使用。
- 在完成前统计日志记录,然后写一行关于你发现的内容。
- 当修改改变了日志记录时,接下来合并结果。
- 保持日志记录的易测试性。这部分不清楚时读者会停下来。
- 当函数改变了日志记录时,接下来重写结果。
- 当接口改变了日志记录时,然后移除结果。
- 先简化日志记录,然后写一行关于你发现的内容。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 日志记录是否易于测试 | 是,每个地方都如此 | 仅在某些地方 |
| 日志记录是否一致 | 是,每个地方都如此 | 仅在某些地方 |
| 日志记录是否易于扫描 | 是,每个地方都如此 | 仅在某些地方 |
| 日志记录是否有用 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:接口中的日志记录不易测试。
之后:模块中的日志记录现在很准确。
注释
先简化注释,然后写一行关于你发现的内容。让注释保持有用。这部分不清楚时读者会停下来。移除测试中的注释,并确保每条注释都是简单的。
步骤:
- 在函数中添加注释,并确保每条注释都易于扫描。
- 阅读差异中的注释,并确保每条注释都是安全的。
- 如果差异中有不止一条注释规则,选择一条规则并统一使用。
- 如果差异中有不止一条注释规则,选择一条规则并统一使用。
- 接下来命名注释,然后写一行关于你发现的内容。
- 然后列出注释,然后写一行关于你发现的内容。
- 然后标记注释,然后写一行关于你发现的内容。
- 对修改中的注释进行排序,并确保每条注释都是具体的。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 注释是否安全 | 是,每个地方都如此 | 仅在某些地方 |
| 注释是否准确 | 是,每个地方都如此 | 仅在某些地方 |
| 注释是否易于测试 | 是,每个地方都如此 | 仅在某些地方 |
| 注释是否易于修改 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:差异中的注释不易修改。
之后:接口中的注释现在是一致的。
文件处理
最后命名文件处理,然后写一行关于你发现的内容。找出差异中的文件处理,并确保每个处理都是一致的。添加修改中每个涉及到文件处理的地方。这部分不清楚时读者会停下来。
步骤:
- 保持文件处理的具体性。这能向读者表明你考虑过细节。
- 添加模块中每个涉及到文件处理的地方。这里的小问题常常会变成大问题。
- 当差异改变了文件处理时,之后移动结果。
- 保持文件处理的一致性。这是人们最常问到的部分。
- 如果测试中有不止一条文件处理规则,选择一条规则并统一使用。
- 当函数改变了文件处理时,然后添加结果。
- 当测试改变了文件处理时,接下来记下结果。
- 当接口改变了文件处理时,在完成前重写结果。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 文件处理是否安全 | 是,每个地方都如此 | 仅在某些地方 |
| 文件处理是否清晰 | 是,每个地方都如此 | 仅在某些地方 |
| 文件处理是否准确 | 是,每个地方都如此 | 仅在某些地方 |
| 文件处理是否准确 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:修改中的文件处理不易修改。
之后:修改中的文件处理现在很具体。
API契约
最后记下API契约,然后写一行关于你发现的内容。最后比较API契约,然后写一行关于你发现的内容。最后合并API契约,然后写一行关于你发现的内容。
步骤:
- 如果差异中有不止一条API契约规则,选择一条规则并统一使用。
- 标记模块中每个涉及到API契约的地方。没有它,两个人会得到两个不同的答案。
- 如果接口中有不止一条API契约规则,选择一条规则并统一使用。
- 保持API契约的有用性。这部分不清楚时读者会停下来。
- 当函数改变了API契约时,之后对结果进行分组。
- 当接口改变了API契约时,最后比较结果。
- 确认修改中的API契约,并确保每个契约都是安全的。
- 比较函数中每个涉及到API契约的地方。这是人们最常问到的部分。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| API契约是否易于修改 | 是,每个地方都如此 | 仅在某些地方 |
| API契约是否一致 | 是,每个地方都如此 | 仅在某些地方 |
| API契约是否安全 | 是,每个地方都如此 | 仅在某些地方 |
| API契约是否易于测试 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:测试中的API契约不一致。
之后:接口中的API契约现在很准确。
日期和时区
在测试中添加日期和时区,并确保每个都是准确的。在模块中比较日期和时区,并确保每个都是一致的。对修改中每个涉及到日期和时区的地方进行分组。这部分不清楚时读者会停下来。
步骤:
- 如果模块中有不止一条日期和时区规则,选择一条规则并统一使用。
- 保持日期和时区的易扫描性。这会让下一步快得多。
- 接下来比较日期和时区,然后写一行关于你发现的内容。
- 然后对日期和时区进行排序,然后写一行关于你发现的内容。
- 在差异中合并日期和时区,并确保每个都是清晰的。
- 当差异改变了日期和时区时,接下来移除结果。
- 添加修改中每个涉及到日期和时区的地方。这部分不清楚时读者会停下来。
- 记下模块中的日期和时区,并确保每个都是简单的。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 日期和时区是否准确 | 是,每个地方都如此 | 仅在某些地方 |
| 日期和时区是否具体 | 是,每个地方都如此 | 仅在某些地方 |
| 日期和时区是否清晰 | 是,每个地方都如此 | 仅在某些地方 |
| 日期和时区是否安全 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:函数中的日期和时区不清晰。
之后:差异中的日期和时区现在是一致的。
空值检查
保持空值检查的清晰度。这类错误大多数在早期容易修复。当函数改变了空值检查时,先找到结果。如果修改中有不止一条空值检查规则,选择一条规则并统一使用。
步骤:
- 保持空值检查的安全性。这类错误大多数在早期容易修复。
- 在接口中对空值检查进行分组,并确保每个检查都是准确的。
- 列出接口中每个涉及到空值检查的地方。这里的小问题常常会变成大问题。
- 如果接口中有不止一条空值检查规则,选择一条规则并统一使用。
- 保持空值检查的完整性。这部分不清楚时读者会停下来。
- 标记函数中的空值检查,并确保每个检查都是有用的。
- 当测试改变了空值检查时,最后重写结果。
- 读取函数中每个涉及到空值检查的地方。现在做个简短检查可以避免以后花长时间修复。
| 检查项 | 良好 | 需要改进 |
|---|---|---|
| 空值检查是否易于修改 | 是,每个地方都如此 | 仅在某些地方 |
| 空值检查是否清晰 | 是,每个地方都如此 | 仅在某些地方 |
| 空值检查是否具体 | 是,每个地方都如此 | 仅在某些地方 |
| 空值检查是否易于修改 | 是,每个地方都如此 | 仅在某些地方 |
示例:
之前:函数中的空值检查