谷歌开源代码评审规范:好坏代码应该这样来判断
谷歌开源了一套代码评审(Code Review)规范,它是谷歌一套通用的工程实战指南,几乎涵盖了所有编程语言与各种类型的项目,这个规范代表了谷歌长期发展以来最佳实战经验的集合,谷歌表示希望开源项目或其他组织能够从这套规范中受益。
代码评审,也称代码复查,如果一个团队正在使用任务分支工作流,那么在所有代码编写完成并通过自动化测试之后,在代码合并之前,就会启动代码评审。通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平,代码评审的所有工具和过程都是为了这个目的而构建的。代码评审对于敏捷团队来说的作用如下:
-
代码评审共享知识
-
通过代码评审可以更好的进行工作评估
-
代码评审能让你享受休假
-
通过代码评审指导新工程师
既然代码评审要进行众多的检查,那么找一个优秀的评审者就非常重要了。一般对于变更列表的不同部分,都会有不同的评审者进行细致的审查。当然如果是结对编程,且你的队友能进行高质量的代码评审,那么这样写的代码一般可以视为已经过评审了。此外,我们也可以进行面对面的评审,评审者会问开发者一些问题。
根据谷歌的项目描述,代码审核规范为两套独立文档组成,代表了两方面内容的最佳实践:
在其中一些文档中使用了一些术语,如下:
- CL:表示“变更列表(changelist)”,意思是已经提交到版本控制或正在进行代码检查的一个独立的更改。其他组织通常称为“改变”或“补丁”
- LGTM:意思是“在我看来不错(Looks Good to Me)”,这是代码审阅者在批准 CL 时说的
接下来我们来看看两份文档分别的主要内容是什么:
1.代码评审者的指南——如何进行代码评审
代码评审者指南本来是一个完整的文档,但作者将其分为了 6 部分,读者可根据需要阅读。
2.CL 作者指南——CL 作者批准代码的评审指南
CL 制定者指南包括一些进行代码评审的开发人员的最佳经验,这些经验能够帮助你更快、更高质量地完成评审。
在谷歌看来,代码审核的目的是确保谷歌代码库的整体代码健康程度。谷歌将以下规则作为代码评审的标准:
一般来说,一旦 CL 能提升整体代码的健康程度,那么即使 CL 不完善,评审者同样也应该倾向于批准该列表。这是所有代码评审指南中的高级原则。它也会有一些限制,例如,如果 CL 添加了一些评审者不需要的特性,那么即使代码做了不错的设计,评审者也应该不予通过。
没有所谓的“完美”代码,只有更好的代码。评审人员不应要求作者在批准前对 CL 的每一小部分过分完美。相反,评审者应该权衡向前继续开发的需求和修改建议的重要性。评审者要求的是持续性地改进,而不是追求完美的代码。CL 作为一个整体,如果它能提升系统的可维护性、可读性和可理解性,那么就不要因为它还不完美而推迟数天或数周更新。
评审者应该经常留下一些评论,以表达能导致更好性能的做法。如果这些做法并不是非常重要的,那么需要加上前缀「Nit:」,从而令代码作者知道这些内容是可以忽略的。
评审指导
代码评审有一个很重要的功能,即教开发者一些开发经验,不论是语言、框架还是一般软件设计准则。留一些评论总会帮助开发者学习一些新的知识,共享知识也是改善系统代码健康状态的重要部分。当然,如果评审者的评论仅仅只是教育性的,且对于标准要求不那么重要,那么还是要加上前缀「Nit:」的。
评审准则
技术事实和数据要优先于观点与个人风格。
在代码风格方面,谷歌的代码风格指南是最权威的参考资料。任何不在风格指南中的代码习惯,都属于个人风格,但我们应该保证基本的风格和谷歌风格指南是一致的。
软件设计方面几乎不会有纯粹的风格问题,或者纯粹个人的习惯问题。很多风格问题都基于一些基本准测,它们并不是简单地由个人观点决定的。此外,如果代码作者通过数据或基本工程原则证明了几种方法同样有效,那么评审者应该接受作者的风格。否则,偏好的选择还是取决于软件设计的标准原则。
如果没有其它适用规则,那么评审者可以要求作者的偏好与当前代码库保持一致,同时不对整体的代码健康水平产生影响。
解决冲突
在代码评审中,如果发生了任何冲突,第一步应该是开发者和评审者基于本项目的 CL 指南达成共识。当达成共识非常困难时,开发者与评审者应该面对面地交流,而不只是通过审查中的评论来交流。如果开会讨论还解决不了,那么就要扩大会议了,我们可以通过与代码维护人员、工程经理等开发者的交流,达成最终的共识。
如果想要深入了解谷歌的这套代码审核规范,可查看该项目。地址如下:
https://gitee.com/leonard/google-eng-practices
来源:机器之心
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux 里的 exFAT 是微软的“特洛伊木马”
作者:Roy Schestowitz博士是软件工程师、跨学科研究人员兼公平竞争的倡导者。 摘要:微软及其推手(媒体业内人士)在传播微软走“开放”道路这个错觉;然而真相是,微软试图加强对Linux的控制,同时因幕后交易而从exFAT专利中获利。 相关阅读:微软 exFAT 技术将进入 Linux 内核 TECHRIGHTS网站逐渐清醒地认识到,对Linux的严重渗透即便不是到了“末期”,至少也到了“晚期”。 自由软件之父Richard Stallman(RMS)的“四大自由”对软件自由而言恐怕还不够。存在明显的漏洞或变通方法。我们在这里不是谈论像systemd这样的东西,而是谈论所有权/控制权的变更/转移。如果你任由内奸、打入内部及渗入到关键项目的其他形式——由于扩展性不好,这些项目太过复杂(或庞大)而无法分支(fork),这些项目注定被搞砸。重申一下,我们在这里不是谈论Devuan/Debian,主要是谈论Linux内核。 “我们在输掉较量......我们在放弃控制权。” 对于软件自由而言访问/获取源代码(以及修改、运行和重新分发的权限)再也不够了,我为此极其难过。这在Linux上体现...
- 下一篇
Mozilla 计划在 2019 年 9 月底向美国用户推出 DoH
继谷歌宣布 DoH 普遍可用后,Mozilla 决定从 2019 年 9 月底开始,向美国 Firefox 用户推出 DNS over HTTPS(DoH)。 我们计划从 9 月底开始在美国逐步推出 DoH。我们先为一小部分用户启用 DoH,同时监视任何问题,然后再面向更多的用户。如果进展顺利,在全面推广 DoH 之前还会发通知。 在过去两年进行了许多实验之后,该组织决定在 Firefox 中默认使用DoH。Mozilla 使用第三方 Cloudflare 作为 DoH,因为它遵循一项严格的隐私协议,这意味着所有的用户流量都通过 Cloudflare 网络。 大多数情况下,DNS 请求都是在公开的情况下完成的,监听这个过程能够获得站点和 IP 地址的记录。与传统 DNS 相比,DOH(通过 HTTPs 加密发出 DNS 请求) 云端服务的性能影响很小,大多数情况只慢 6 毫秒,连接错误率也没有明显差异,但是却比 DNS 更安全,使用者隐私能受到更好的保护。 不过需要注意的是,TLS 仍然以明文形式送出目的地。 Firefox 允许禁用 DoH 并恢复到系统 DNS。先看在 Firefo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能