快来领取这份代码审查问题手册!

代码审查列表,是代码审查的明确规则和指导手册,它可以使代码审查为你的团队带来更多好处,并且能够显著提升代码审查的速度。

研究表明,使用代码审查列表的审阅者的表现要优于不使用的审阅者。所以不管你是新手开发者还是经验丰富的开发者,开始考虑使用代码审查列表吧。

代码作者应该关注的列表

作为代码的作者,你应该保证:

  • 代码编译成功并且通过静态检查(没有警告)
  • 代码通过所有的测试(单元测试、集成测试和系统测试)
  • 你已经仔细检查了拼写错误,并做了处理(注释、todo等)
  • 概述代码修改的原因以及修改了哪些地方

除此之外,作为代码作者,也应该在提交审查之前,按照审查者的列表对自己的代码进行审查。

代码审查者应该关注的列表

作为代码审查者,你的任务是寻找最重要的问题。评论会要对代码的结构性或逻辑性问题更有价值,即使有时候会显得挑剔。

你应该知道什么是好的代码反馈。另外需要注意,最好的代码审查反馈不是点评,而是建议。所以不要说“变量名称应该是removeObject“,最好说”调用变量removeObject怎么样?“。

下面这份列表足够帮助你提出好的代码审查反馈了。

实现

  • 此代码更改会执行它应该做的事情吗?
  • 这种解决方法是最简单的吗?
  • 这个更改有引入一些不需要的编译时或运行时的依赖吗?
  • 是否使用了不应该使用的框架、API、库、服务?
  • 是否存在可以提升解决方法的未使用的框架、API、库、服务?
  • 代码是否处于正确的抽象级别?
  • 代码是否的模块化做的是否足够好?
  • 你是否有其他的解决方案,该方案在代码可维护性、可读性、性能、安全方面表现更好?
  • 是否已经存在类似功能的函数?如果有,为什么不复用?
  • 是否有最佳实践、设计模式或特定语言模式可以优化代码?
  • 代码是否遵循面向对象的分析和设计原则,例如单一责任原则,开闭原则,里氏替换原则,接口隔离,依赖注入?

逻辑错误或Bug

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

错误处理和日志

  • 错误都被正确处理了吗?
  • 是否有需要增加或删除的日志/debug信息?
  • 错误消息对用户是否友好?
  • 是否有足够的日志,它们的编写方式是否是易于调试的?

可用性和可访问性

  • 从可用性角度出发,所提出的解决方案是否设计合理?
  • API文档是否足够好?
  • 提出的解决方案是否具备可访问性?
  • API/UI是否直观易用?

测试与可测试性

  • 代码是否达到可测试标准?
  • 是否有足够的自动化测试(单元测试/集成测试/系统测试)?
  • 现有测试是否合理覆盖代码变更?
  • 是否有额外的测试用例、输入或边界用例以供测试?

依赖

  • 如果这个修改需要更新代码以外的文件,例如更新文档,配置,readme文件。是否完成了这些更新?
  • 这个修改是否会对系统其他地方造成影响?是否能后向后兼容?

安全和隐私数据

  • 这段代码是否打开软件的安全漏洞?
  • 权限和身份验证是否被正确处理?
  • 是否安全处理了敏感数据,例如用户数据、信用卡信息等?是否正确使用加密方法?
  • 代码更改是否显露了一些私密信息(如迷药,用户名等)?
  • 如果代码处理用户输入,是否解决了跨站点脚本,SQL注入等安全漏洞,是否进行了输入清洗和验证?
  • 从外部API或库中获得的数据是否进行了相应的检查?

性能

  • 这段代码修改是否会对系统性能产生负面影响?
  • 是否可以进一步提升代码性能?

可读性

  • 代码是否容易理解?
  • 哪一部分使你困惑,为什么?
  • 可以通过减小方法来提高代码可读性吗?
  • 可以通过使用不同的函数/方法或变量名称来提升代码可读性吗?
  • 代码是否存放在正确的文件/目录/包?
  • 你是否认为方法应该重构以拥有更直观的控制流程?
  • 数据流是否可理解?
  • 是否有多余的注释?
  • 某些注释是否可以更好的传达信息?
  • 是否更多的注释会使你的代码更容易理解?
  • 是否可以移除一些注释,通过提升代码可读性来理解代码?
  • 是否存在注释掉的代码?

专家意见

  • 你是否认为特定专家(如安全专家或可用性专家)应该先检查代码,然后再提交代码?
  • 这个代码修改会影响其他团队吗?他们也应该发表意见吗?

好了,以上就是最为紧迫的一些问题列表。

代码风格和约定

您的团队或公司必须拥有清晰的编码风格指南,这一点很重要。因为这是在代码库中实施唯一性的唯一方法。并且一致性会使代码审查更快,使人们可以轻松地更改项目,并保持您代码的可读性和可维护性。

Google是做到这一点的很好的例子,无疑,这使Google可以进行快速的代码审查。

首先,我建议使用现成的编码样式来支持Google提供的多种语言。设定基本规则很重要,但要确保一劳永逸。不要持续争论。

尽可能自动化

确定了代码风格以后,请花一些时间正确安装和配置工具,以便一键格式化代码。

另外还有很多事情可以做。例如使用静态检查来代替部分人工审核。这是值得为之努力的。

完整问题列表

原文链接

https://www.michaelagreiler.com/code-review-checklist/

【译】送给你的代码审查问题手册相关推荐

  1. 《TensorFlow 机器学习方案手册》(附 pdf 和完整代码)

    红色石头的个人网站:www.redstonewill.com 今天给大家推荐一本适合新手入门机器学习和 TensorFlow 的最佳教程:<TensorFlow Machine Learning ...

  2. GNU Bison 中文手册

    GNU Bison 中文手册 2005年06月22日 22:31:00 阅读数:41743 20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-li ...

  3. 20050620 GNU Bison 中文手册翻译完成

    20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序. 它不但与Yacc兼容还 ...

  4. linux bison 手册

    20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序. 它不但与Yacc兼容还 ...

  5. 《UNIX/Linux的传奇历史》--程序员价值观(送给年轻程序员)

    了解过去,我们才能知其然,更知所以然.总结过去,我们才会知道我们明天该如何去规划,该如何去走.在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而 有些东西却能经受着时间的考验散发着经久的魅力,让人津 ...

  6. 开发者头条 2016 年度盘点系列文章

    2016 年开发者头条十大获赞最多文章 0. 如果有人问你数据库的原理,叫他看这篇文章 如果你对了解一个数据库感兴趣,但是从未有时间或意愿来刻苦钻研这个内容广泛的课题,你应该喜欢这篇文章. 1. 吐血 ...

  7. rw_《计算机是怎样跑起来的》4-11 章

    2016.07.15 - 08.19 <计算机是怎样跑起来的>4-11 章. - 矢泽久雄 / 著 - 胡屹 / 译 个人学习笔记. [知识的范围(编程)] 4 程序像河水一样流淌着 问题 ...

  8. Unix传奇(下篇)

    2010年04月09日 陈皓 评论 75 条评论 44,560 人阅读 [本文曾于2007年3月于我在CSDN上的BLOG发布,现在我把其搬到酷壳来,一来是觉得这段历史相当传奇,值得大家再看看,二来也 ...

  9. [每日一题] OCP1z0-047 :2013-07-14 正则表达式

    正则表达式只是搜索,替换,格式化等功能,格式化一般用后向引用,没有计算length和concatenate(连接串联)的. 答案:CDE 要想详细了Oracle正则表达式,具体看附件. Oracle ...

最新文章

  1. 德国人工智能研究中心波尔特:人工智能与工业4.0并驾齐驱
  2. [Vim 使用]vim 自动括号补全配置
  3. UVA11174村民排队问题
  4. 598. Range Addition II(Python)
  5. Python核心编程(第九章)--文件和输入输出
  6. 数据结构之树的定义及操作
  7. FD.io VPP配置文件详解
  8. 工作一年了,从新拾起写博客的道路
  9. 第十六章:springboot 整合logback日志
  10. springBoot构建Restful webService接口(医院)
  11. C++ string类成员函数
  12. 数美黑产研究院|揭秘黑产非法盗爬访问与非法占座“抢票”行径
  13. Win7以上系统通过Dbgview打印驱动日志
  14. OBS 录制黑屏的解决方法
  15. FTP 21端口和20端口有什么区别?
  16. Oracle 精编实用手册
  17. 中国足球如何才能捧起大力神杯
  18. scrapinghub 爬取amztracker页面信息
  19. python实现批量修改图片颜色
  20. 安杰思在科创板IPO过会:拟募资约8亿元,达安基因为其主要股东

热门文章

  1. 40%的中小企业已倒闭,谁来救助剩下的60%?
  2. Inconsistent use of tabs and spaces in indentation等问题的解决
  3. 为什么推荐你用 Kotlin语言?
  4. 使用Microsoft Visual Studio International Pack获得中文字符串的所有拼音组合(处理多音字)
  5. GitLab Issue
  6. 高校逐步应用电子签章,君子签助力校务管理数字化
  7. linux添加人脸识别认证
  8. Java:效率工具之随机号码生成器
  9. Android - 定位方式,火星坐标系统,一键锁屏,嵌入式android开发
  10. 【CelebA】【MTCNN】制作mtcnn训练数据集