如何使开发人员及时进行代码审查


12

我工作的公司要求所有代码在提交之前都要经过其他开发人员的审查。我们团队的成员经常感到沮丧,因为其他开发人员太忙于编写代码以致无法进行审查,尤其是如果审查时间很长的话。您如何激励其他开发人员及时进行代码审查?

(我们使用git-svn,因此我们可以在等待审查的同时继续编码。但是,当我不得不等待很长时间才能提交代码时,我仍然感到沮丧。)

Answers:


12

看看facebook如何使用自己的名为phabricator的应用程序做到这一点:http ://phabricator.org/

他们基本上基于每个问题进行提交,并且对于每个问题,都会显示代码,该代码将由某人进行审核。除非审阅者认为可以,否则代码不会进入主存储库。

我想它使它更有趣。

另外,也许应该将代码分配给两个人:一个由谁来执行,而一个由谁来对其进行审核。

尽管您的队友可能不相信此评论。

就个人而言,在没有审阅者的情况下,我将单元测试用于较低级别的功能,而将“看门人测试”用于所有其他功能:看门人测试采用这种方式,因为即使是看门人也应该能够理解您的代码。

我通常删除一些较小的部分,例如块/功能范围括号,可见性标记,有时甚至是类型,并向要求代码的人员,经理,领域专家,队友展示:“这是您想要的吗?”

此外,亲自去那里,直到完成审核后再离开也有帮助。

或者,如果您对团队不满意,或者他们对您不满意,您就会知道,“如果您可以更换公司,请更换公司” ...


9

我将基于以下两个假设:

  1. 每个人似乎都想编写代码(如果没有,那么您就有需要去做的人。)。
  2. 每个人都希望签入自己的代码。

只允许完成评论的人员签入他们的代码。

也许可以花一些时间专门用于代码审查,以期避免被中断的问题。

目标应该是检入质量代码。您不想惩罚/强加评论到每个人都给它“橡皮图章”批准的程度。

如果您具有不同的级别(小,小等),晋升和维持头衔应该取决于您的工作。


1

在以前的几位雇主中,我们轮换了每天接受“代码审查”的人员。通常,有3个人共享一个CR日,每个CR必须由两名审阅者签署。这样可以确保在您工作的那一天,无论其他项目如何,都知道CR是您的期望。因此,每五天左右,该轮到您了,您可以相应地调整开发任务。

目前,我们有一个团队负责人对其团队的代码进行粗略的CR。根据CR的完成情况,可以根据应用程序的哪个区域进行更新,然后将其提交给Global Review Team,在这里,我们检查对应用程序具有全球影响的事物,而不是与单个功能有关。当需要进行大量审核时,我们通常将其分解为几个人,因此没有人需要处理大量文件中的更改。

也就是说,我们只会审查已提交给当前Dev分支/变体的代码。在将代码提升到下一个(例如Alpha)环境之前,必须先通过代码审查,全局审查,数据库审查和UI审查(根据需要)。

最后,我们同意SLA关于如何快速处理评论。几乎没有什么东西排在48小时以上,大多数评论都在不到24小时内完成。


1

我工作的公司要求所有代码在提交之前都要经过其他开发人员的审查。我团队的成员经常感到沮丧。

除非您为生产发布候选代码编写关键任务软件或关键补丁,否则没有令人信服的理由严格遵守特定类型的代码审查。

  • 从表面上看,公司要求背后的想法听起来很合理(100%审阅的代码),但是他们决定使用的手段却适得其反-因为正如您所指出的那样,这会使开发人员感到沮丧。

走在你的鞋,我想第一点是管理后提交代码审查,同样被认为是可敬的预提交的。这些术语可在网上搜索-如果需要,请在此处找到备份的参考。一个人不一定需要预先提交评论才能获得100%的评论代码。

基于以上内容,我接下来建议他们放弃微观管理的态度,让开发人员尝试对他们而言更方便的方法。提交前或提交后的评论最好留给程序员选择。如果公司比程序员更了解,他们为什么不自己编写代码?


1
“如果公司比程序员更了解,他们为什么不自己编写代码?”:很好的评论!但我希望开发经理本身就是以前的开发人员。
乔治,

3
根据我的经验,提交后会严重损害您的代码质量。程序员很懒惰,如果可以付诸实践,他们会觉得自己已经完成了:“是的,这还不完美,但是f.ck关心的人,生活中最完美的人是什么呢? ” 唯一的好答案是“否”,也许经理们对程序员的印象比他们对自己的印象更真实,这就是为什么他们要求预先提交(或至少合并之前)的代码审查。
Aadaam

@Aadaam您的经验与我的经验绝对不同-不仅在提交后方面,而且(尤其是)“程序员是懒惰的……”部分。对于具有更真实形象的管理人员,我同意在这种情况下通常就是这种情况。我的团队;它不仅没有导致我与用于工作毫无意义的想法什么样的审查,以武力经理
蚊蚋

好吧,我从事外包工作。在外包中,大多数程序员不是因为编程很有趣,而是因为编程具有最佳的工作/薪资比率,而工资/薪金比率远高于其他任何东西……他们讨厌它像其他工作一样。如果您知道我的意思,请尝试做所有事情以进一步“优化”该比率...
Aadaam 2012年

1

您有许多问题要解决-必须赢得人心,并且必须确保有时间进行代码审查。

第二部分可能是最简单的-您同意(集体并且必须包括管理人员),开发人员每天早晨要做的第一件事是他们的代码审查-这是简单,可理解,有效的方法,并且为您提供了打败他人的好方法如果他们不遵守。更好的是,您没有打扰任何事情,不是在要求他们停止处理他们的代码,也不是在要求人们将某些内容压缩到他们的工作清单中……

第一部分是真正的问题-审核过程中的参与者必须将其视为具有价值,否则,他们在编写代码或修复错误(其中包括错误)时将永远不会进行代码审核(认为没有价值)。当然更重要...?)。

如果您可以将两者放在一起-首先确保每个人都相信(或理解)代码审查中的价值-基本上,这应该意味着更少的错误,这意味着更多的新代码通常更有趣-然后其次是事情,以便在时间表中有明确的空间来进行代码审查,然后希望会发生好事...它将成为文化的一部分。

一旦成为文化的一部分,就不再需要说“每天第一件事”了-但是说了一下,我认为它很适合某个人可能希望开发人员参与的模式。


您不能完全同意“每天的第一件事”首先存在。如果有人发现一个漏洞,使公司每小时损失X美元(或使错过重要截止日期的风险增加每小时X个百分点),而他们恰好在您上班前五分钟这样做,那么代码审查不是您的责任当务之急。基本上,问题在于设定简单规则的愿望与优先权并不总是那么简单的事实之间存在冲突。风险在于每个人都将全心全意地同意该规则,并在24小时内找到今天是该规则例外的某些原因。
史蒂夫·杰索普

解决方案很棘手,但是IME您必须找到足够的“空间”以引入一种新的工作方法,该方法既费时又值得。这就需要有远见的能力来识别闲暇时间,是否愿意随时间的推移以引入一个有意义的变化的代价,或者两者兼而有之。TANSTAAFL。就像你说的那样,一旦每个人都适应了模式,他们就可以例外。希望他们这样做是基于对一般模式价值的正确理解。
史蒂夫·杰索普

我说“让截止日期放宽”,我应该说“延长截止日期”。“滑移”意味着在提交它们(即失败)后移动它们,但不必那样做。相反,您可能会因为不灵活的新规则(以及人们尝试遵循任何新流程而导致的不可避免的低效率)而计划在一段时间内降低生产力,如果您首先进行代码审查,那么您会错过早上的混乱在几天的会议上,代码审查花费的时间太长,或者您的组织可能投入到任何独特的琐事中来。如果这是一个好规则,那么您很快就会超越起点。
史蒂夫·杰索普

@SteveJessop当然您可以完全同意。当然会有例外(我碰巧认为对Scrum的观察是愚蠢的-尤其是答案很明显(-:)。我认为关键是没有“一种尺寸适合所有解决方案”提出了一些简单易懂且相对难以改变时间表的内容(再次取决于环境)
Murph

1

在我工作过的大多数公司中,您需要3天才能完成审核。不接受审核是不可接受的。这是你工作的一部分。如果您不按时进行体面的评估,则会影响您的绩效评估。是的,评论似乎总是在最不合时宜的时间进行。太糟糕了,学习将评估时间包括在您的估计中。无论如何,如果管理层真的认为审查很重要(即,他们要求审查所有代码),那么他们将推行类似的政策。另外,如果人们没有在指定的时间内完成审查,那将是他们对材料的接受。


0

考虑使用诸如Review Board之类的工具。这是非常有帮助的,特别是对于长评论。

您可以上传差异文件,然后等待评论者完成评论。如果您有公开的评论使您无法继续工作,则可以在日常会议中进行报告(您的团队希望检入新功能,以便尽快对其进行测试,不是吗?)。


0

要补充的几点不在其他答案中。

必须检查的代码必须签入

  • 以便您查看稳定的版本。
  • 如果发行版足够远,它可以在主开发分支上
  • 如果有充分的理由不污染主管道,则可以在分支上

阻塞任务具有优先权,因此代码检查应优先于其他工作(但不要破坏您的流程)。作为开发人员,您应该希望其他人查看您的代码(因为您打算使其变得更好)。有鉴于此,您应该立即对他人进行审核。

较难的问题是何时以及如何进行良好的代码审查。

在什么时候对我们有用的规则是,必须检查共享代码,因为它具有更广泛的影响,而在单个应用程序的代码中(尤其是考虑到我们正在使用测试驱动的开发),它的重要性就不那么重要了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.