代码审查清单






4.91/5 (93投票s)
适用于大多数编程语言的理想代码审查清单
引言
本文旨在提出一个理想且简单的清单,该清单可用于大多数语言的代码审查。尽管市面上有大量的代码审查技术,以及如何编写高质量代码、如何处理审查中的偏见等,但它们在寻找额外好处时总是忽略了关键点。本文的主要思想是为代码审查者提供直接、清晰的审查要点,以在最短的时间内高效地进行审查。
代码审查的目的
代码审查的最终目的是检查代码,找出薄弱环节、错误、优点以及优化代码以提高性能的方法。其主要目的是交付一个无 bug(至少接近完美)的应用程序,该应用程序满足目的(需求)并符合行业标准。
代码审查清单分为两部分
- 代码审查清单 - 基础
- 代码审查清单 - 全面
代码审查清单 - 基础
- 基于目标 [有目的]
代码实现了其目的。简单来说,它做它应该做的事情。
- 牢不可破 [已验证]
必要的地方都使用了验证。代码在任何情况下都不会崩溃。尤其是在用户输入无效的情况下。无论输入是负数、过大、格式无效等,所有传入的输入都应在进一步处理之前进行处理和净化。在访问对象的属性之前,会检查每个对象是否实际包含数据。
- 响应已处理 [错误处理和数据格式化]
不仅仅是错误消息,服务器返回的每个响应都必须得到妥善处理。它应具有必要的标头、响应消息、错误代码以及其他必要详细信息,并以所需格式附加。所有可能的情况都经过测试,以避免死锁、超时等。
- 遵循架构 [无设计偏差]
验证应用程序是否在整个过程中都遵循了批准的架构/设计(如果没有,请考虑建立一个)。如果需要进行任何设计更改,请确保在现有代码中实施这些更改之前,已记录、建立基线并获得批准。
- 单元测试 [可靠]
每个核心方法都有一个通过的单元测试。
- 可重用 [无重复]
所有方法都服务于有限且明确的目的(遵循 DRY 原则)。在适用之处重用函数,并以能够在未来实现中重用的方式编写。没有代码重复。逻辑使用通用函数,没有歧义。
- 面向性能 [快速响应和可伸缩性]
应用程序的加载速度很快。请求和响应之间没有长时间延迟。避免使用原始字符串连接,并使用 `StringBuilder` 等适当的方法。代码是可伸缩的,能够处理大量数据和未来的功能。
- 安全 [代码安全]
代码在身份验证(带加密)、注入、角色、未经授权的访问、目录遍历、SQL 注入、跨站点脚本等方面的安全性。它遵循 OWASP Top 10 安全原则。
代码审查清单 - 全面
- 可管理 [简洁和格式化]
代码可读、有注释且易于管理。格式友好,易于阅读/理解。方法不太大,便于管理,并且不超过可读的大小。
- 符合编码约定和标准 [标准化方法]
代码遵循编码约定、标准,并与现有应用程序代码一致。没有注释掉的代码和硬编码的值。
- 使用后断开连接 [内存处理]
已释放使用后不会自动释放的资源。连接、端口已正确关闭。
- 具有可配置的日志记录 [可追溯性]
记录每次事务或需要记录的事务。它们存储在存储库(作为文件)和数据库(作为文本)中。可以在配置文件(如 *web.config*)中启用/禁用用于不同目的的不同阶段的日志记录。
- 代码覆盖率超过 95% [效率]
代码覆盖率与单元测试通过一样重要。95% 的代码已被覆盖(这意味着 95% 的代码已通过单元测试进行实际测试)。
- 按需资源交付 [快速]
资源仅在需要时获取和交付。有处理大量数据的必要选项,如分页等。
- 无警告/控制台日志 [数据安全]
运行应用程序时不会出现编译器警告。开发的日志已被清除,并且没有应用程序信息(尤其是敏感信息)写入浏览器控制台。
- 第三方工具/库的合法使用 [许可]
仅在使用外部库对应用程序证明有必要时才使用。如果使用了第三方工具或库,则会验证其许可和合法使用情况,并符合规定。
参考文献
- https://smartbear.com/learn/code-review/what-is-code-review/?q=code+review
- http://www.evoketechnologies.com/blog/code-review-checklist-perform-effective-code-reviews/
- https://codeproject.org.cn/Articles/524235/Codeplusreviewplusguidelines
结论
上述清单对于确保代码质量、满足需求、发挥最佳性能,同时保持安全、可伸缩和快速至关重要。此列表总会添加更多要点。建议在完成“首要清单”的检查后,再查看所有“值得拥有”的要点。