我们走访了900名微软员工,为你揭秘全球最大软件公司的代码评审机制

  • 时间:
  • 浏览:2

大数据文摘出品

来源:michaelagreiler

编译:倪倪、钱天培、毅航

全球最大的软件公司之一微软拥有约140,000名员工,其中离米 44%,即超过1000,000名员工,是工程师。

Office、Visual Studio或Windows等几种产品,都是由数千名共同在同一代码库上工作的工程师开发的。确保由不同子团队开发的代码完美地协同工作是一件非常重要的任务。

很难 你想过么,很难 大的工程师规模下,微软是怎样确保代码质量的呢?

微软的法宝在于:删改的代码评审机制!

微软代码评审是一种生活被广泛采用的工程实践。成千上万的工程师认为这是另有一一一3个伟大的最佳实践。大多数高绩效团队花费小量时间进行代码评审。

很难 ,微软的代码评审究竟是一种生活怎样的机制呢?今天,文摘菌就带你来一探究竟。

调研微软的代码评审

在微软代码评审的大规模研究中,他们采访、观察并调查了900多名开发人员。

他们的目的是了解怎样在微软完成代码评审。他们想知道,在进行代码评审的完后 ,开发人员面临哪此陷阱,以及他们为克服哪此挑战而开发的最佳实践。

您还须要从微软的代码评审实践中学到哪此?

大多数经验教训对于小型或大型团队组织都很有价值。意味着分析您的团队尚未进行代码评审,我会向您展示该实践的好处。意味着分析您的团队意味着分析有了代码评审机制,您还须要将您的实践与微软的代码评审实践进行比较。

微软工程师多久进行一次代码审查?

在这项研究中,36%的开发人员表示他们每天进行多次代码评审。另有39%的开发人员表示,他们每天离米 进行一次代码评审。 12%的人每周多次进行代码评审,很难 13%的人表示过去一周他们很难 进行代码评审。

这意味着分析,微软的开发人员将小量时间花在代码评审上。有后后 ,确保有效使用这段时间非常重要。

代码评审提供哪此好处?

代码评审的好处

代码评审最重要的好处是,提高代码质量并找到代码中的严重不足,另有一一一3个重要好处是知识转移。

知识转移意味着分析,审核彼此代码的团队成员熟悉代码库的大每项内容。有后后 ,这也意味着分析代码评审最好在团队外部实施。另有一一一3个优点是,新的团队成员和初级开发人员还须要在审阅或获得反馈的共同学习和提高他们的编码技能。

意味着分析开发人员在代码评审期间讨论替代出理 方案,它不仅还须要改善代码库,还还须要为所有相关人员提供学习意味着分析。有后后 ,学习、指导和自我改进是代码评审不言而喻被认为是微软的一种生活有益实践的主要意味着。

开发人员通常怎样进行代码评审?

代码审查还须要通很多种法律辦法 执行。有时,还须要很不正式, 比如一位开发人员走到另一位开发人员的桌边共同看其他代码。其他完后 ,团队共同审核代码。有后后 ,您在微软的代码审查中遇到的最意味着分析的清况 是,代码评审是在借助工具的帮助下完成的。 

代码评审的工具有而是有种。在微软,团队还须要自由挑选他们的工具。 至2016年,89%的开发人员表示使用CodeFlow代码评审工具。稍后我将解释更多有关此代码评审工具的信息。从那时起,随着Git的兴起,工具领域趋于稳定了变化。

现在,让他们考虑另有一一一3个典型的代码评审案例: 微软的开发人员Rose完后 完成了另有一一一3个功能,现在想要得到她同行的反馈。

Rose怎样在微软开始英文英语 代码审查?

Rose首很难为代码评审做准备。这名步包括打开代码评审工具,允许她预览代码更改。代码评审工具还须要执行差异化对比任务,帮助罗斯确切了解她做了哪此更改。

在仔细审查了哪此变化完后 ,她标记了其他备注,告诉评审人她做了哪此以及为哪此另有一一一3个做。备注说明有有助于于审阅者了解代码更改的目的和动机。至此,代码已准备好还须要发送给审阅者了。

Rose怎样挑选离米 的代码审阅者? 

其他经验充裕的开发人员都知道应该选谁作为代码审阅者。然而,对于团队中的新人或新的工作领域,挑选意味着分析会更棘手。意味着分析Rose不知道她应该加进去去谁,她会查看团队规定或询问她的同事。她还还须要使用代码评审工具的推荐功能,该工具还须要根据代码库的经验和知识帮助挑选审阅者。

谁是相关审阅者?

Rose挑选她认为还须要为这段代码贡献知识的审阅者。审阅者通常是其他开发人员,但也还须要包括其他利益相关者,这名开发人员工程师,UI专家或经理。其他评审员被选是基于他们的专业知识,其他评审员被选是为了让他们能随了解即将趋于稳定的变化。

代码评审的一般步骤

Rose要求她的同行反馈

一旦选中每当事人,Rose就会发出代码评审。代码评审工具会自动发送创建评审的通知到每当事人。通知对象不仅包括所有审阅者,也会包括当事人员,这名相关团队的经理或产品经理。哪此通知允许他们的信息保持同步,即使他们不须要执行评审。

接受反馈是个迭代过程

Rose的同事们有时间就会审查代码。每个审查者都能评注代码,完事后把代码发回Rose,Rose还须要据此修改代码。

审查者通常关注的点包括:代码有bug吗?代码价值形式有问题吗?代码有拼写错误、少个冒号这名的小毛病吗?都是所有的评注都重要,有后后 有好多个小技巧可用来提升代码评注。

Rose准备新版本的代码

Rose根据评注修改代码。意味着分析有的地方弄错了或有争议,Rose意味着分析直接去跟审查者面谈,意味着分析通过审查工具交流会更私人化其他。

不管怎样,一旦Rose根据反馈完成了代码修改,她还须要发一份新版本的代码给审查者,这份代码叫修订版。

若有必要,她都是收到反馈。这名循环视清况 而定会持续好几轮,一般的小代码审查一次即可,僵化 的代码意味着分析得审查多轮。

另有一一一3个的工作是很常见的,还意味着分析在作者和审查者之间擦出思维的火花。

所有的审查者都批准,Rose登记代码

完事完后 ,审查者标记代码为okay,Rose终于还须要把代码补充到公共代码库了。其他团队会允许开发者在审查开始英文英语 前就把代码上传到代码库。这名清况 通常在代码只需小修小改的完后 趋于稳定,另有一一一3个还须要异步审查并加速开发。

后面 是我不好的所有步骤都是Microsoft代码审查周期的常规操作,被所有团队执行,根据团队不同而略有出入。

何必 所有团队都一样

如你所想,事情何必 一成不变。Microsoft的其他团队会其他额外步骤或工具助力代码审查。我会简单介绍哪此额外步骤。

涵盖测试结果的代码审查

意味着分析你最想要做的事情而是,审查哪此代码审查软件就还须要审查的代码。而是有你应该在审查完后 先跑一遍测试。

其他团队要求做代码审查的完后 把测试结果也共同上传。另有一一一3个还须要保证人人都测试一下。

其它团队意味着分析更加严格,每个审查者审查的完后 都是触发编译,编译和测试的结果都是被装进审查报告上。

涉及用户交互界面的代码审查

意味着分析开发者把用户交互界面也改了,那TA最好截个屏给别人看下。另有一一一3个审查者就省的跑代码了,直接看图片就行,审查者也还须要方便检查因运行环境不同而产生的差异。

涵盖静态分析的代码审查

静态分析对规范代码样式来说尤其有效。微软的其他团队使用自动化的静态和动态分析工具作为专用的机器人评审员。哪此机器人评论代码样式和其他静态问题。另有一一一3个就能腾出时间你还须要工代码审阅者执行更有趣的任务。

微软的代码审查工具

多年来,微软实际上的代码评审标准之一是另有一一一3个名为codeflow的外部工具。这是另有一一一3个僵化 的代码评审工具,它支持开发人员并指导他们完成代码评审的所有步骤。

Codeflow帮助编写代码,自动通知审阅者,并具有充裕的注释和讨论功能。

codeflow是另有一一一3个相当依赖UI的工具,很像Word或PowerPoint,如下面的截图所示。

CodeFlow截屏 (2016)

CodeFlow界面说明

看屏幕截图,在左边(A)你还须要就看所有受影响的文件。

同样在左边,您还须要就看(B)分配给评审的审核员名单以及他们的清况 (这名,已宣布或待决)。活动文档显示在编辑器(C)中。在底部,您还须要就看(D)所有文档的注释列表。

当事人面,在活动文档(F)中很难 另有一一一3个注释。此注释连接到代码的具体每项(即一行中的另有一一一3个单词)。最后,在顶部,您还须要就看代码评审的总体清况 。在这名清况 下,意味着分析完成。完后 的数字表明了不同的修正。在这次审查中,进行了五次修订。

评注功能

Codeflow最优秀的价值形式之一是它的评论功能。代码审阅者还须要非常精确地挑选她想要评论的代码的每项。这名,审阅者甚至还须要在一行中高亮显示另有一一一3个或另有一一一3个字符,而都是突经常出现示整个行。有后后 ,审阅者还须要将评论附加到该挑选。

将此注释通知代码作者或其他审阅者,并还须要围绕此注释以守护线程池池的形式启动会话。

讨论功能

这名评论功能就像在Twitter或Facebook等社交媒体平台上发表评论。有后后 ,Codeflow的评论体验非常自然,他们还须要进行充裕的对话和讨论。另有一一一3个不错的好处是还须要为哪此评论守护线程池池中的每另有一一一3个指定另有一一一3个清况 。这名,清况 还须而是“不让修复”、“已出理 ”或“打开”。

代码评审修订的比较

你也还须要挑选代码评审的另有一一一3个不同版本,并比较两者之间的差异。这意味着分析您还须要准确地就看代码评审作者在另有一一一3个代码评审修订版和另有一一一3个代码评审修订版之间执行了哪此更改。这方便了跟踪审查的进展。

代码评审分析工具

开发人员花费小量时间在Microsoft执行代码评审。为了确保这段时间得到充分利用,Microsoft拥有当事人的代码评审分析平台。

该平台存储从代码评审开始英文英语 的所有代码评审数据,参与代码评审的开发人员,以及开发人员的所有评论。甚至还须要追溯每次修订的代码更改。

哪此代码评审数据是Microsoft对代码评审进行多项实证研究的基础。其他产品团队也使用它来理解他们当事人的代码评审实践。

微软代码评审的未来

随着Micorosft的参与和对GitHub的收购,改变是不可出理 的。这名,在Microsoft中广泛采用git作为源代码管理工具,就还须要看出这名变化。有后后 ,这也意味着分析在微软,以”pull request”的形式进行的代码评审正在上升。

相关报道:

https://www.michaelagreiler.com/code-reviews-at-microsoft-how-to-code-review-at-a-large-software-company/

本文由

大数据文摘

发布在

ITPUB

,转载此文请保持文章删改性,并请附上文章来源(ITPUB)及本页链接。

原文链接:http://www.itpub.net/2019/05/29/1987/