代码审查是软件开发过程中的一个重要环节,其目的是确保代码质量,发现并修复潜在的问题,同时优化代码以提高性能。本文旨在提供一个简单而全面的代码审查清单,帮助审查者以最少的时间高效地完成代码审查工作。
代码审查的最终目的是检查代码,发现弱点、错误、优点以及优化代码的方法,以实现更好的性能。其主要目的是交付一个几乎没有缺陷(至少接近完美)的应用程序,满足需求的同时符合行业标准。
代码审查清单分为两个部分:基础清单和全面清单。
目标导向 [有目的] 代码实现了其目的。简单来说,它做了它应该做的事情。
坚不可摧 [验证] 在必要时使用验证。代码在任何情况下都不会崩溃。特别是来自用户端的无效输入,无论是负值、过大、格式不正确等,每个传递的输入都应该在进一步处理之前进行处理和消毒。在访问其属性之前,每个对象都应检查其实际数据存在。
响应处理 [错误处理和数据格式化] 不仅仅是错误消息,服务器返回的每个响应都必须得到适当处理。它应该有必要的头部、响应消息、错误代码以及附加在所需格式中的任何其他必要详细信息。测试所有可能的场景以避免死锁、超时等。
遵循架构 [无设计偏差] 验证整个应用程序是否遵循了批准的架构/设计(如果没有,考虑将其落实)。如果需要进行任何设计更改,请确保在将它们实现到现有代码之前,这些更改已被记录、基线化并获批准。
单元测试 [可靠] 每个核心方法都有一个通过的单元测试。
可重用 [无重复] 所有方法都服务于有限且清晰的目的(遵循DRY原则)。在适用的地方重用函数,并以可以在未来实现中重用的方式编写。没有代码重复。逻辑使用通用函数,没有歧义。
性能导向 [快速响应和可扩展性] 应用程序的启动是迅速的。请求和响应之间没有长时间的延迟。避免使用原始字符串连接,并使用StringBuilder等适当方法。代码是可扩展的,能够处理大量数据和即将推出的功能。
安全 [安全代码] 代码在认证(带加密)、注入、角色、未经授权的访问、目录浏览、SQL注入、跨站脚本等方面是安全的。它遵循OWASP 10安全原则。
可管理 [清晰格式化] 代码是可读的、有注释的,并且易于管理。它格式友好,易于阅读/理解。方法不会太大,易于管理,不会超过可读大小。
符合编码约定和标准 [标准化方法] 代码遵循编码约定和标准,并与现有应用程序代码一致。没有注释的代码和硬编码值。
使用后断开连接 [内存处理] 不自动释放的资源在使用后被释放。正确关闭连接、端口。
可配置的日志 [可追溯性] 记录每个事务或需要记录的事务。它们存储在存储库(作为文件)以及数据库(作为文本)中。可以在配置文件(如web.config)中启用/禁用不同阶段的不同目的的日志。
代码覆盖率超过95% [效率] 代码覆盖率与单元测试用例通过一样重要。95%的代码被覆盖(这意味着95%的代码实际上通过单元测试用例进行了测试)。
按需资源交付 [快速] 仅在需要时获取和交付资源。对于处理大量数据,如分页等,有可用的选项。
无警告/控制台日志 [数据安全] 运行应用程序时不会出现编译器警告。开发过程中使用的日志被清除,不会将应用程序信息(特别是敏感信息)写入浏览器控制台。