`
franczx
  • 浏览: 2049 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Google的代码Review实践与一些感悟

阅读更多

接触到《Google的工程实践文档》纯属机缘巧合。自认为是一枚资深码农,对代码review早已驾轻就熟。读完之后,仍旧受益匪浅。受到原文中“希望其他组织也能从中受益”这句话的感召,我决定将其翻译成中文,托管到Github上,与大家一起分享。

原文标题为工程实践文档,表达更直接点,就是代码review规约。全文分两部分,一部分是针对代码审核人的指南,另一部分是针对代码提交人的指南,两部分文档交相呼应。

这份文档讲述了代码review的标准是什么,详细列举了在代码review过程中常见的问题,如何避免或解决这些问题,同时讲解了这么做的原因以及不这么做可能产生的后果。

文档列举了不少正面与反面的例子,可操作性很强。相信企业文化接近的朋友在读了本文之后,会有很深的认同感。在文档中提到、现实中做得不够好的地方,能很快掌握,并能把它融进自己所在的团队中,提升整个团队的开发效率。企业文化差距比较大的朋友读了之后,即使管理机制与此不兼容,在个人的层面也有很多可以改进的地方。从事非软件开发行业的朋友读了之后,相信也能有所感悟。文中提到的一些软技能,如情绪管理、沟通技巧等,在日常生活与工作中也非常有用。

回顾自己过去十几年review代码与被review代码的经历,有些事项一直都这么做,我知道为什么应该这么做;有些事项一直都这么做,至于为什么这么做我颇有微词;也有事项直到今天才知道原来这样做更好。

荀子在《劝学》中提到:不积跬步,无以至千里。抗战时期“积小胜为大胜”的战略思想,也是同样的道理。在本文中,鼓励每次都做一点微小的改进,多次微小的改进比一次大的改进容易得多。这与Scrum把大User Story拆分成小User Story的观点相吻合。因为Points比较大的User Story,往往因为太大而无从下手,时间上也不可控。在进行Scrum指导时,我常对团队说“我们一个迭代周期只需改进两三个重要的问题,不必一次到位。习惯的力量太强大,需要逐步改进、适应,再改进,直到我们需要改进的措施成为我们的习惯。” 

原文提到一条看似要求很低的原则:在修改时,至少不要恶化代码。不要恶化代码是底线,一旦发生微小的恶化,破窗效应开始起作用,代码的健康状况会飞流直下。制定过高的标准,容易让人受挫;而合理的标准配以可实操的步骤,更容易达到目标,建立自信心。

我见过这样的主管,一次性提出很多要求,让下属立即(或很快)按照要求实施,而他要求的这些改变与团队当前的环境、习惯、认知存在很大的差距。立即实施的要求看似简单,但缺乏行之有效的措施,忽视了客观环境,忽视了突然改变所付出的代价与造成的负面影响,注定无法长期坚持下去。道理很简单,反面教材在生活中的确很常见,如上海严格的垃圾分类政策。

关于尊重,在彼此尊重的环境里,大家心态比较放松,愿意以积极的心态去避免或解决问题。因为彼此的尊重,大家更愿意通过沟通、讲理的方式去解决问题,而非依职位定高下。在这方面,不少企业还有很大的提升空间。

提到沟通,本文提到了一些沟通与冲突解决的技巧。如,当审核者与开发者有不同观点时,文档对审核者说,“开发者对代码更熟悉,先考虑对方的看法是否是正确的。”对开发者说,“先思考审核者提供的反馈中是否存在有价值的部分。”很有趣,在冲突解决时,都是先审视自身,对方是否是对的。如果每个人都以这种方式处事,相信全人类离世界和平的愿望又接近了一步。

世事并不完美。在代码审核过程中,“违反专业礼仪时间一件很严重的事情。我们可以保证自己遵守,但永远没法保证他人不违反。”当他人违反了专业礼仪,我们该怎么做呢?本文也提出了解决方案。

还有一点很重要,“不要在代码审核中带着情绪回复评论。” 为人处世也是如此,在情绪激动(或紧张)时,人很难理智地思考,此时做出的决定往往会让自己后悔。不如先采取措施让自己冷静下来,之后再做决定。

以上是我的个人感悟,有兴趣的朋友读读原文吧。

 

相关文档

0
0
分享到:
评论

相关推荐

    代码审查CodeReview的最佳实践

    包括像Google、微软这些公司,CodeReview都是基本要求,代 我一直认为CodeReview(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,...

    Gitlab 代码 review 插件

    在 Gitlab 中,代码 review 是一个重要的组成部分,它允许团队成员对提交的代码进行检查和讨论,确保代码符合项目规范和最佳实践。 Gitlab 代码 review 插件,如描述中提到的 "gitlab code view google extionsions...

    代码Review 文档

    代码审查(Code Review)是软件开发过程中的一个重要环节,它旨在提高代码质量,发现潜在的错误,提升团队协作效率,以及传播最佳实践。以下是一些关键的代码审查知识点,基于提供的文档内容: 1. **定期进行Code ...

    代码review指南

    代码审查(Code Review)是软件开发过程中的重要环节,它涉及到多个角色和一系列的步骤,目的是在开发初期就发现代码中的错误,提高代码质量,促进团队成员之间的知识共享和技能提升。在这份代码审查指南中,将详细...

    使用reviewboard和svn进行代码审查配置全过程文档

    总的来说,这些文档构成了一套完整的流程,教你如何在自己的环境中设置和使用ReviewBoard与SVN进行代码审查。通过这样的系统,你可以确保代码的质量,促进团队间的沟通,并提高整体开发效率。记住,实践是检验真理的...

    Coding Review Checklist(代码审查清单).pdf

    本文将根据“Coding Review Checklist(代码审查清单)”的内容,详细解析其涉及的关键知识点。 #### 二、常规项 1. **代码运行性**:确认代码能够正常运行,这是最基本的要求。如果代码无法运行,那么后续的所有...

    静态测试方法之代码审查(CodeReview)的清单

    静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...

    代码review.ppt

    了解代码review做的ppt,可以帮助人理解代码review的概念

    code review代码检测原理

    **代码审查(Code Review)是软件开发过程中的一个重要环节,旨在提高代码质量,发现潜在的错误,提升团队协作效率,并确保代码遵循最佳实践和项目规范。本文将深入探讨代码审查的原理、步骤以及如何有效地执行代码...

    ReviewBoard + Tao-ReviewBoard + SVN 搭建代码审阅平台

    Tao-ReviewBoard是Eclipse的一个插件,用于与ReviewBoard集成,使得在Eclipse中可以直接提交代码进行审查。而SVN(Subversion)则是一个版本控制系统,用于管理代码的版本和历史记录。 在搭建过程中,需要注意...

    review board自动提交代码

    是reviewboard为实现自动化提交代码的脚本

    jupiter代码review工具

    代码审查是软件开发过程中的重要环节,它可以帮助发现潜在的错误、提升代码可读性,并促进团队成员之间的交流与学习。Jupiter提供了一个用户友好的界面和一系列强大的功能,使得代码审查变得更加高效。 ### Jupiter...

    IDEA代码检视插件Code Review Helper(支持团队协同)

    6. **源代码管理集成**:Code Review Helper通常会与版本控制系统(如Git)集成,使得代码审查与日常的开发流程无缝衔接,确保每次代码提交都能得到适当的审查。 在实际使用中,下载的压缩包文件"IntellijIDEA-Code...

    基于Gitlab的代码审查流程(Code-Review)方案

    与集中式的版本控制系统不同,Git采用分布式架构,每个开发者电脑上的代码库都是完整的,这样的设计使得版本控制的效率极高。Git支持多样的工作流程,包括传统的集中式工作流,也支持更高效的特性分支工作流。 ...

    code review tool from google

    根据给定的文件信息,我们可以提炼出关于代码审查(Code Review)及其在谷歌开发流程中的应用的关键知识点。 ### 什么是代码审查? 代码审查是一种软件工程实践,其中一名开发者编写代码后,由另一名开发者进行...

    Java项目开发代码Review常见问题实例.doc

    在Java项目开发中,代码审查(Code Review)是确保代码质量、遵循最佳实践以及提高团队协作效率的关键步骤。本文档将深入探讨在Code Review过程中常见的问题,并提供实例分析,以帮助开发者避免这些问题。 **第一章...

    Andriod 代码Review工具 插件

    提供一个很好的代码Review工具。可以设置4个级别,可以对优秀代码进行学习,还可以对有问题的代码进行复查。

    Source Insight CodeReview宏,增加使用说明

    3. **协作与沟通**:CodeReview宏支持集成常见的版本控制系统(如Git、SVN等),方便开发者将代码更改与评审过程与版本控制相结合。此外,它还可以与邮件系统集成,自动发送评审请求和反馈,促进团队间的沟通。 4. ...

    代码review准则

    开发编写代码需要知道的基本准则,仅供参考,非原创,如有雷同侵权请联系作者删除 纯属分享

Global site tag (gtag.js) - Google Analytics