谁应该进行代码审查?


12

在我公司中,大多数架构师都会进行代码审查。他是一个非常有经验和聪明的软件专家,因此他非常擅长。当开发人员进行代码审查时,他们不会做一半。我们试图让开发人员进行更多的代码审查,但是代码审查的质量并不理想。我们使用Scrum作为开发方法。

但是,对于当前系统,存在两个问题:

  1. 建筑师成为瓶颈

  2. 开发人员不对代码和体系结构的质量负责(这会导致各种问题)。

我们如何解决这些问题?我们应该更改代码审查的对象吗?



1
我不认为它是重复的。这些问题是相关的,但可能的重复内容侧重于稍有不同的问题。
Bart van Ingen Schenau 2014年

您能否扩展一下“代码审查质量”的含义?您的意思是审查结束时出现的代码质量吗?在我看来,您只有一个开发人员可以生产可接受质量的代码,在这种情况下,我会说您遇到了更大的问题……
AakashM 2014年

Answers:


15

开发人员应进行代码审查。他们应该进行代码审查,因为他们应该知道代码,公司风格标准和实践。通过让其他人进行代码审查,您就是在告诉开发人员,确保代码符合公司标准不是他们的责任。

如果您认为他们需要进行代码审查方面的培训,请为他们准备。根据当前的情况,您可以让开发人员进行代码审查,然后由架构师进行评论-让开发人员将审查提交架构师以供批准,然后再将其发送给提交者。


2
通过让其他人进行代码审查,您是在告诉开发人员确保代码符合公司标准不是他们的责任。 ”-是和否。您还告诉您“您的代码受(希望)进行严格的同行评审,因此,您最好在第一时间做到正确。”
JensG 2014年

@JensG:但是在OP的情况下,不是同行来进行审查。
jmoreno,2014年

3
这就是为什么我让它大胆。
JensG 2014年

8

在这种情况下,您需要的是这位经验丰富的开发人员的知识,以帮助团队的其他成员成长。团队的素质并不取决于最佳开发人员的技能;它是由最差的技能定义的。您可以尝试以下操作:

  • 协作评论。在我上一个团队中,这确实很棒。我们将整个团队放到有投影仪的房间里,并开始审查一些物品。也许一开始,架构师是指导评审的人,但是在几周内(我们每个星期五预留了一两个小时),整个团队开始交谈并理解目前只有架构师才知道的关键概念。

  • 配对编程。对我来说,这是在团队中传播知识的最佳工具。


+1用于配对编程。实际上,尽管我在该问题上的第一个问题是“每个人”,但是结对编程更能解决这个问题。我认为,如果我们将其作为质量方面以外的学习资源,则可以从中获得最大收益。
JensG 2014年

3

虽然我可以看到让系统/软件架构师签署所有更改/提交的要点,但软件开发人员应该能够在不涉及架构师的情况下进行审阅(仲裁除外)。

我首选的[*]审核程序是:

  • 按需求/问题分组更改。
  • 邀请所有开发人员,软件架构师和需求/问题的作者进行审查。(并非所有人都需要进行审查。)
  • 考虑在以下情况下完成审核:
    • 两名开发人员进行了审查。
    • 所有评论都已回复。(可能由软件架构师做出决定。)
    • 一个工作日过去了,无需进一步讨论(或所有受邀方都进行了审核)。

因此,我对您的问题的简短回答是: 开发人员应进行更改审核。

[*]不幸的是,这并不总是我参与的项目的运作方式。


现在总是,还是总是?
马丁2014年

您可能已经猜到:“并非总是如此”。感谢您发现它。我已经纠正了答案。
Jacob Sparre Andersen 2014年

3

我喜欢偶尔进行团队代码审查的做法,这种审查包括整个团队的架构师,但是在团队的两三个成员之间进行了很多又很多的代码审查。

如果这确实是棘手的代码或敏感代码,请招募架构师或团队的高级成员。

坦白说,让架构师进行代码审查听起来有点荒谬。他应该进行设计审查,或偶尔进行代码审查以分享他的专业知识。工程团队应对代码负责。如果有问题,随着时间的推移他们会变得更好。


2

我同意,如果只有一个人进行评论,那么其他人可能只会选择“我不知道,这似乎行得通,但是让那个聪明的人弄清楚是否可以”。我可以想到以下几点:

  • 公开您的代码,以便每个人都可以看到每个人在做什么;在每个包含代码的文件的开头放置名称;也许将它们打印出来并在浴室或任何您认为会引起注意的地方加盖它们
  • 配对编程;旁边有另一个大脑,在命名变量之前您需要三思i
  • 接您的管理员,并向他解释继承的工作原理(哦,是的,它不起作用)。向其他人解释您的代码会有所帮助。也许它可以编译,也许它可以做正确的事情,但是您并不真正理解为什么。现在是你的机会
  • 有一套准则,使每个人都遵循它们;不管有什么指导方针,总比没有指导要好
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.