以下为译文:

在本文中,我们将简要介绍13条代码审查标准,希望能够通过这些标准极大地帮助改善软件的质量,同时让开发人员保持心情愉悦。

代码审查是开发过程中的一个环节,顾名思义,代码审查需要一位或多位开发人员审查另一位开发人员(即代码的作者)编写的代码,以确保:

  • 代码没有任何错误,没有bug,也没有问题;

  • 代码符合质量与样式指南的要求和标准;

  • 代码完成了所有预期功能;

  • 合并代码后,代码库仍然能够正常运行,且达到更好的状态。

这就是为什么代码审查是软件开发的重要环节的原因。代码审查者担当着把关者的职责,负责决定这些代码是否能够成为代码库的一部分并进入生产环境。

Google以其卓越的技术而闻名世界,他们拥有高效的代码审查标准,这些标准突出了审查代码时需要牢记的一些重点。关注公众号互联网架构师回复:2T,还能获取一套完整的 架构视频。

在Google,“代码审查的主要目的是确保Google代码库内整体的代码运行状况能够不断提升。” —— Google工程实践文档

以下是审查代码时你需要牢记的一些重点。

代码审查标准:

这些代码能够提升系统整体的运行状况

每次代码变更(拉取请求)都能够提升系统整体的运行状况。重点在于,即便是很小的改进,合并代码后都会提升软件或代码库的运行状况。

快速审查代码,并给出积极地响应和反馈

首先也是最重要的一点,不可延误代码的合并。世上没有完美的代码。如果代码可以提升系统的整体运行状况,则应该立即交付这些代码。

“关键在于,世上没有完美的代码,只有更好的代码。” —— Google工程实践文档

如果手头没有紧急任务,那么请在代码提交上来后立即进行审查。响应拉取请求的时间最长不得超过一个工作日。一天之内,应针对一次拉取请求完成多轮的部分或完整的代码审查。

在代码审查的过程中开展教育和启发

在代码审查的过程中,应尽可能通过共享知识和经验提供指导。

审查代码应遵循标准

请始终牢记,样式指南、编程标准以及相关的文档应该作为代码审查的绝对权威。例如,制表符与空格的使用应保持一致,此时你可以引用编程约定。

如果你选用的是Java,那么以下文章可能会有所帮助,文中总结了大型科技公司Java编程的最佳实践:《Java编程最佳实践摘要》(https://rhamedy.medium.com/a-short-summary-of-java-coding-best-practices-31283d0167d3)

解决代码审查冲突

解决代码审查冲突时,应遵循样式指南以及编程标准中商定的最佳实践,并征求其他拥有更多产品领域知识和经验的人的建议。

如果你的意见是可选或不怎么重要的,请在注释中说明,然后由作者来决定是解决还是略过。

作为代码审查者,在没有样式指南或编程标准的情况下,你至少可以建议此次代码变更与其余代码库保持一致。

演示UI变更是代码审查的一部分

如果代码变更涉及用户界面变化,则除了代码审查外,还需要提供演示,确保界面符合预期且与界面设计一致。

对于前端代码变更,你需要进行演示,或确保代码变更包括必要的UI自动化测试,以验证添加或更新的功能。

确保代码审查中包含了所有测试

除非遇到紧急情况,否则拉取请求应包含所有必要的测试,例如单元测试、集成测试以及端到端测试等。

这里所说的紧急情况指的是,某个需要尽快修复的bug或安全漏洞,而测试可以等到以后再添加。在这种情况下,请确保创建了适当的票证/问题,并确保有人负责在完成热修复或部署后立即完成测试。

我们绝对不可以跳过测试。如果时间有限,某些目标有无法实现的风险,那么解决方案不是跳过测试,而是限定可交付成果的范围。

不要为了代码审查打断手头的工作

如果你正在专心致志地工作,那么请不要打断自己,因为你需要花费很长时间才能重新投入工作。换句话说,打断专心工作的开发人员所付出的代价远远超过了让开发人员等待代码审查。你可以在休息(午餐或咖啡等)过后,进行代码审查。

大多数时候,整个代码审查以及代码的合并无法在一天内完成。重要的是迅速给作者一些反馈。例如,虽然可能无法完成完整的审查,但你可以快速指出一些有待探讨的地方。这可以极大地降低代码审查期间的挫败感。

审查所有代码,不要做任何假设

你需要审查提交上来的每一行代码。不要对人工编写的类和方法做任何假设,而且应该确保你理解代码在做什么。

确保你理解正在审核的代码。如果不理解,则请作者澄清或提供代码演示和解释。如果你不具备审核部分代码的资格,则请其他有资格的开发人员代为审查。关注公众号互联网架构师回复:2T,获取完整的Java架构视频。

审查代码时需要保持大局观

从更广阔的视野来看待代码变更会更有帮助。例如,某个文件被修改,并添加了4行新代码。请不要只看这4行代码,你应该考虑审查整个文件,并检查新添加的内容。它们是否会降低现有代码的质量?它们是否会导致现有功能成为重构的候选对象?

如果不在函数/方法或类的背景下审查添加的代码,则随着时间的流逝,你将会得到一个面临无法维护、纠缠不清、不易于测试等问题的类,而且这个类很难扩展或重构。

请记住,即便是微不足道的改进,随着时间的推移,也可能导致产品出现缺陷,同样,即便是轻微的代码降级或技术负债也可能在日积月累下导致产品难以维护和扩展。

在代码审查期间认同和鼓励出色的工作

如果看到出色的代码变更,请别忘了大力表扬和鼓励作者。代码审查的目的不仅仅是发现错误,而且还应该鼓励和指导开发人员出色的工作。

在代码审查期间应保持谨慎、尊重、友善和思路清晰

在代码审查期间,你应该保持友善、思路清晰、有礼貌和尊重别人,这一点至关重要,同时也要给予作者清晰的反馈和积极的帮助。在审查代码时,你需要做到对事不对人,即对代码做出评论,而非开发人员。

详细解释代码审查的意见,并注意尺度

每当代码审查意见提出替代方案或指出某些问题时,重要的是你需要解释其中的原因,并根据个人的知识和经验提供示例,以帮助开发人员理解为何你的建议能够提升代码质量。在建议修改或变更代码时,你需要在如何指导作者修改代码方面找到适当的平衡。例如,我更喜欢指导、解释、提示或建议,而不是整个解决方案。

作者:Rafiullah Hamedy
原文:https://medium.com/better-programming/13-code-review-standards-inspired-by-google-6b8f99f7fd67
出品:CSDN(ID:CSDNnews)译者:弯月,责编 | 杨碧玉

关注微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。

猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别

9、2T架构师学习资料干货分享

Google 推荐和鼓励的 13 条代码审查标准,建议收藏!相关推荐

  1. Google 鼓励的 13 条代码审查标准,建议收藏!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Rafiullah Hamedy 来源 | h ...

  2. ​Google 鼓励的 13 条代码审查标准,建议收藏!

    作者 | Rafiullah Hamedy 译者 | 弯月,责编 | 杨碧玉 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中,我们将简要介绍 ...

  3. Java基础学习总结(166)——Google 13 条代码审查标准

    前言 代码审查是开发过程中的一个环节,顾名思义,代码审查需要一位或多位开发人员审查另一位开发人员(即代码的作者)编写的代码,以确保: 代码没有任何错误,没有bug,也没有问题: 代码符合质量与样式指南 ...

  4. 推荐50个超实用的 Chrome 扩展,建议收藏

    推荐50个超实用的 Chrome 扩展,建议收藏 今天来分享 50 个超实用的 Chrome 浏览器扩展! JSON 1. JSON Viewer Pro JSON Viewer Pro 用于可视化J ...

  5. 学英语必备的18条法则,建议收藏!

    黄金法则第1条 What is language for? Some people seem to think it is for practicing grammar rules and learn ...

  6. 【数据科学】 推荐一个更高效的数据清洗方法,建议收藏

    今天来分享一个高效率的数据清洗的方法,毕竟我们平常在工作和生活当中经常会遇到需要去处理杂七杂八的数据集,有一些数据集中有缺失值.有些数据集中有极值.重复值等等. 01 导入库和读取数据 我们首先导入所 ...

  7. 让自己更优秀的 16 条法则(建议收藏)

    微信又改版了,为了方便第一时间看到我们的推送,请按照下列操作,设置"置顶":点击上方蓝色字体"程序员之家"-点击右上角"-"-点击" ...

  8. AI大牛推荐的八本必读NLP书籍(建议收藏)

    在人工智能背景技术下,自然语言处理(NLP)技术被越来越多的人看好,并受到重视.实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义,也能以自然语言文本表达给定的意图.思想等.前者称为自然 ...

  9. google海底光缆图_总长超过10万公里 谷歌参与投资了13条海底光缆

    图:2019年4月23日,谷歌资助的居里光缆(Curie)在智利瓦尔帕莱索着陆 1.居里光缆 图:谷歌资助的居里光缆 居里光缆以美国加州洛杉矶为起点,沿着太平洋海岸一路延伸到智利首都圣地亚哥西北120 ...

  10. 不论你技术多牛,这13条职场“潜规则”,越早知道越好!

    见字如面,我是军哥! 我作为 IT 职场上摸爬滚打将近 20 年的老互联网人,经过了一些事.见过了一些人,渐渐明白了所谓的社会潜规则.职场就是江湖,江湖有江湖的规矩,你不遵守规矩就会付出惨痛的代价. ...

最新文章

  1. python不同层级模块的导入和文件的读写
  2. MICRA OPENCART 自适应主题模板 ABC-0678-02
  3. 初识50个Linux命令
  4. linux 脚本学习--细节问题
  5. 比较好的JavaScript库-日常备用
  6. 关于文件服务器共享文件的备份与恢复
  7. IDEA画Use Case(用例图)
  8. Unity工具——SVN工具
  9. RFC8998+BabaSSL---让国密驶向更远的星辰大海
  10. 今日头条推荐算法相关博客集合
  11. lintcode刷题——罗马数字转整数
  12. nodejs android ios,NodeJs 搭建WebSocket Push Server Web Android iOS Client
  13. 彻底干掉霸占我任务栏的2345好压的垃圾广告搜索以及天气预告工具栏
  14. Linux高级网络开发奇妙之旅
  15. flex little know
  16. MongoDB——聚合管道之$project操作
  17. 用python画皮卡丘的代码-用python画一只可爱的皮卡丘
  18. CODING 研发管理系统上线全球加速,助力企业跨区域协作
  19. Google的垂直搜索
  20. 一键分析Android的BugReport

热门文章

  1. window10安装黑苹果
  2. (二)Nginx安装与配置
  3. 矩形嵌套-记忆化搜索(dp动态规划)
  4. Groovy模板引擎
  5. jquery操作li向下向上几行
  6. 《老码识途》读书笔记:第一章(中)
  7. C++字符串格式化 sprintf详解
  8. 虚拟机搭建集群服务(1)——准备工作
  9. 用DELPHI为ASP开发文件上载组件
  10. 「leetcode」C++题解:226.翻转二叉树,递归法与迭代法详解