代码审查清单

审查之前,应确保以下原则:

  • 该代码编译并通过静态分析而不会发出警告
  • 该代码通过了所有测试(单元测试,集成测试和系统测试)
  • 您已仔细检查拼写错误,并进行了清理(注释,待办事项等)
  • 您概述了此修改的含义,包括修改的原因以及修改的内容

执行

  • 这个代码更改是否完成了它应该完成的任务?
  • 这个解决方案可以简化吗?
  • 此更改是否添加了不需要的编译时或运行时依赖项?
  • 是否使用了不应该使用的框架、 API、库、服务?
  • 是否没有使用框架、 API、库、服务来改进解决方案?
  • 代码是在正确的抽象层上吗?
  • 代码是否足够模块化?
  • 你是否会用一种不同的方式来解决这个问题,这种方式在代码的可维护性、可读性、性能和安全性方面会大大提高?
  • 类似的功能是否已经存在于代码库中? 如果是,为什么这个功能不被重用?
  • 是否有任何最佳实践、设计模式或特定于语言的模式可以极大地改进此代码?
  • 这个代码是否遵循面向对象的系统分析原则,比如单一责任原则、开关原则、 里氏替换原则、接口隔离原则、依赖注入原则?

逻辑错误和 BUG

  • 您能想到任何代码不按预期行事的用例吗?
  • 你能想到任何可能破坏代码的输入或外部事件吗?

错误处理和记录

  • 错误处理是否以正确的方式进行?
  • 是否应该添加或删除任何日志或调试信息?
  • 错误消息对用户友好吗?
  • 是否有足够的日志事件,以及它们是否以便于调试的方式编写?

依存关系

  • 如果这个更改需要在代码之外进行更新,比如更新文档、配置、自述文件,这样做了吗?
  • 这个变化会不会对系统的其他部分或者向下兼容产生影响?

安全性和数据隐私

  • 这段代码是否打开了软件的安全漏洞?
  • 授权和身份验证是否以正确的方式处理?
  • 敏感资料如用户资料、信用卡资料是否妥善处理及储存?
  • 是否使用了正确的加密方法?
  • 这些代码更改是否会泄露一些秘密信息,如密钥、密码或用户名?
  • 如果代码处理用户输入,它是否处理安全漏洞,如跨网站脚本,SQL 注入,它是否执行输入清理和验证?
  • 是否相应地检查从外部 api 或库检索的数据?

性能

  • 您认为这个代码更改会对系统性能产生负面影响吗?
  • 您认为有可能改进代码的性能吗?

可用性和可访问性

  • 从可用性的角度来看,建议的解决方案是否设计得很好?
  • 空气污染指数是否有详细的文件记录?
  • 建议的解决方案(UI)可访问吗?
  • API/UI 的使用是否直观?

道德

  • 这一变化是否会以一种可能引起隐私问题的方式利用用户数据?
  • 这种改变是利用了行为模式还是人类的弱点?
  • 这些代码,或者它所支持的东西,会对(某些)用户造成精神和身体上的伤害吗?
  • 如果守则增加或改变了人们互动的方式,是否有适当的措施来防止/限制/报告骚扰或虐待?
  • 这种变化是否导致某个特定的人群或用户被排除在外?
  • 这一法规的改变是否会对人们产生不公正的影响,尤其是那些与敏感特征有关的,如种族、民族、性别、国籍、收入、性取向、能力、政治或宗教信仰?
  • 这些代码的改变是否引入了算法、人工智能或机器学习的偏见?

测试与可测试性

  • 代码可测试吗?
  • 它有足够的自动化测试(单元/集成/系统测试)吗?
  • 现有的测试是否合理地覆盖了代码更改?
  • 是否还有一些测试用例、输入或边缘用例需要测试?

可读性

  • 代码容易理解吗?
  • 哪些部分让你困惑,为什么?
  • 可以通过更小的方法来提高代码的可读性吗?
  • 可以通过不同的函数/方法或变量名来提高代码的可读性吗?
  • 代码是否位于正确的文件/文件夹/包中?
  • 您认为某些方法应该重新构造以获得更直观的控制流吗?
  • 数据流可以理解吗?
  • 有多余的评论吗?
  • 一些评论能更好地传达这个信息吗?
  • 更多的注释会使代码更易于理解吗?
  • 是否可以通过提高代码本身的可读性来删除一些注释?
  • 有没有注释掉的代码?

 

本文链接地址: 代码审查清单

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注