代码审查标准

代码审查的主要目的是确保Google代码库的总体代码运行状况随着时间的推移而不断改善。为此目的,设计了所有代码审查工具和过程。

为了实现这一点,必须权衡一系列折衷。

首先,开发人员必须能够在他们的任务上取得进展。如果您从未向代码库提交过改进,那么代码库将永远不会得到改进。另外,如果审阅者很难进行任何更改,那么开发人员就没有动力在将来进行改进。

另一方面,审阅者有责任确保每个CL的质量都使得其代码库的整体代码运行状况不会随着时间的流逝而减少。这可能很棘手,因为随着时间的推移,代码库通常会由于代码运行状况的小幅下降而退化,尤其是当团队处于明显的时间限制下并且他们认为必须采取捷径才能实现其目标时。

此外,审阅者对他们正在审阅的代码拥有所有权和责任。他们希望确保代码库保持一致,可维护,以及“代码审查中的查找内容”中提到的所有其他事项 。

因此,我们将以下规则作为代码审查中期望的标准:

通常,即使CL(Change List)并非完美,一旦处于肯定可以改善正在使用的系统的整体代码运行状况的状态下,审阅者也应该批准它。

这是所有代码审查指南中的高级原则。

当然,这是有局限性的。例如,如果CL添加了审阅者不希望在其系统中使用的功能,则即使代码设计得当,审阅者也可以肯定拒绝批准。

这里的关键点是,没有“完美”的代码,只有更好的代码。审稿人不应要求作者在批准前抛光CL的每一小块。相反,与他们所建议的更改的重要性相比,审阅者应该平衡取得进步的需要。审稿人要追求的不是追求完美,而是 持续改进。总体而言,可以提高系统的可维护性,可读性和可理解性的CL不应延迟几天或几周,因为它不是“完美的”。

审阅者应该随时发表评论,表示可能会更好,但是如果不是很重要,可以在其前面加上“ Nit:”之类的字样,以使作者知道这只是他们可以选择忽略的亮点。

注意:本文档中没有任何理由证明检查CL肯定会 恶化系统的整体代码运行状况。您唯一要做的是在紧急情况下。

指导

代码审查具有重要的功能,可以教给开发人员有关语言,框架或通用软件设计原理的新知识。留下有助于开发人员学习新知识的评论总是很好的。共享知识是随着时间的推移改善系统代码运行状况的一部分。请记住,如果您的评论纯粹是教育性的,但对满足本文档中描述的标准不是至关重要的,请在其前缀前加上“ Nit:”,否则,表明并非强制要求作者在本CL中对其进行解决。

原则

技术事实和数据否决了意见和个人喜好。

在样式方面,样式指南 是绝对权威。不在样式指南中的任何纯样式点(空格等)都是个人喜好问题。样式应与那里的样式保持一致。如果没有以前的样式,请接受作者的样式。

软件设计的方面几乎从来都不是纯粹的样式问题,也不是个人喜好。它们基于基本原则,应权衡这些原则,而不仅仅是个人意见。有时有一些有效的选择。如果作者可以证明(通过数据或基于可靠的工程原理)几种方法同样有效,那么审阅者应接受作者的偏爱。否则,选择取决于软件设计的标准原理。

如果没有其他规则适用,则审阅者可以要求作者与当前代码库中的内容保持一致,只要这不会使系统的总体代码运行状况恶化。

解决冲突

在代码审阅中发生任何冲突时,第一步应始终是使开发人员和审阅者根据本文档以及《 CL作者指南》 和《审阅者指南》中其他文档的内容达成共识。

当达成共识变得特别困难时,在审阅者和作者之间进行面对面的会议或视频会议可能会有所帮助,而不仅仅是尝试通过代码审阅注释来解决冲突。(但是,如果这样做,请确保将讨论结果记录为对CL的评论,以备将来阅读。)

如果那不能解决问题,则最常见的解决方法是升级。升级的途径通常是进行更广泛的团队讨论,请一位技术负责人参加,要求代码维护者做出决定,或者要求Eng经理提供帮助。不要让CL坐下来,因为作者和审稿人无法达成协议

参考

https://google.github.io/eng-practices/review/reviewer/standard.html

Google Code Review代码审查标准相关推荐

  1. Google Code Review最新指南

    本文译自Google最新开放的code review指南:How to do a code review 原文地址:https://google.github.io/eng-practices/rev ...

  2. google code review系列6 - 处理code review中的pushback(完结篇​)

    接上篇:google code review系列5 - 如何编写code review评论.本篇是code review的完结篇,pushback可以解释成对code review出来的问题的拖延.推 ...

  3. 什么是Code Review 代码审查

    Code Review 是一种通过复查代码提高代码质量的过程,在XP方法中占有极为重要的地位,也已经成为软件工程中一个不可缺少的环节. 本文通过对Code Review的一些概念和经验的探讨,就如何进 ...

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

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

  5. Google是如何做Code Review的?| CSDN原力计划

    作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  6. Google 是如何做 Code Review 的?| 原力计划

    作者 | 帅昕 xindoo 责编 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  7. Google是如何做Code Review的

    我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices documentation,翻译后的github仓库https://github.c ...

  8. 第四十八期:你太菜了,竟然不知道Code Review?

    我一直认为Code Review(代码审查)是软件开发中的优秀实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题. 作者:宝玉 我一直认为Code Review(代码审查)是软件开发中的 ...

  9. 聊Code review(上)

    篇前的话:本文主要关注互联网应用程序如何做Code review(代码审查)方面.上篇主要描述什么是code review, 为什么要去做,主要包含哪些内容:下篇,主要讲如何组织人员做代码review ...

  10. Code Review 在丁香医生前端团队的实践

    时间过得很快,转眼间 Code Review 机制在丁香医生前端团队已经运作一年多了.今年4月初时,将团队在 Code Review 方面的一些经验在丁香园前端团队进行了分享,各个业务线的前端同学们逐 ...

最新文章

  1. [原创]VS2008 英文版转为中文版之小记
  2. 为HttpStatusCodeResult加入customErrors
  3. 特老的文章:三层应该怎么划分。不知大家还有用否
  4. maven 为html赋版本号,maven-replacer-plugin 静态资源版本号解决方案(css/js等)
  5. 热烈欢迎Ubuntu志愿者!
  6. 阿里Android架构师面试就这?我上我也行!
  7. php源码之路第一章(环境配置及常用代码)
  8. 无法打开内核设备“\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
  9. Java身份证处理工具
  10. ffmpeg av_read_frame函数解析
  11. Navicat for MySQL 12破解
  12. 202106笔记--
  13. 数据家新三板挂牌上市
  14. 手机变速齿轮_变速齿轮手机版下载-变速齿轮 安卓版v1.0-PC6安卓网
  15. 小白也能自己完成APP制作
  16. go protoc 项目安装要点
  17. xml文件的书写及读取books.xml文件生成Book类
  18. slot game开发 Development of slot game
  19. UE 库文件使用方法
  20. Java数据类型分析

热门文章

  1. docker java镜像_Docker容器引擎与架构
  2. php保存上传的音频文件在哪里,php 视频、音频和图片文件上传,该如何解决
  3. PHP获取grpc请求时间,Go gRPC进阶-超时设置(六)
  4. Spring基于注解管理bean(一文搞懂注解及使用注解)
  5. BackgroundWorker 简单使用教程 多个线程的创建
  6. 解决/usr/bin/ld: cannot find -lxxx 问题
  7. OpenVz Centos4 Oracle 10g VE
  8. IBM小型机维护手册
  9. -webkit-padding-start: 40px;ul的padding-left:40px;问题
  10. classpath路径浅谈