在代码审查中给予正面评价是适当的,还是仅用于建设性批评?


36

我最近一直在进行大量代码审查,但是我不确定在代码审查中添加正面和/或有趣的评论会带来正面和负面的影响以及专业性。

我们使用Github作为我们团队中的代码审查平台,因此任何人都可以查看注释。我通常会尝试使用该平台,因此从头到尾的整个过程都是可见的和历史性的。


是的,我意识到这在很大程度上与文化有关,但是我正在寻找一个普遍的答案。
Codeman

22
重要的是要用正面的评论来增强您希望看到的内容。

2
我不知道这是否合适,但有时我会在评论中张贴haikus编码:初级程序员-您未注释的代码是-像痛苦的碎片。
yannis 2013年

我实际上是初级程序员,正在审查高级人员的代码-我们在这里有一个非常严格的过程,必须对所有代码进行审查:)
Codeman

Answers:


53

重要的是要强调正面和负面。我知道如果我正在将一个特定的地狱子系统的重构重新整理为整洁的东西,我可能会为程序员的努力买一个比萨饼。

如果您正在使用评论作为培训,那么它就变得非常重要-突出显示一段好的代码将对初级程序员同时审查该代码很有帮助。他们将有机会提出疑问,说明为什么一种特定的方法或技术比另一种更好。


您可以添加“为什么重要”的注释吗?当您这样做时,我会标记为已接受:)
Codeman

3
它使人们知道他们在做什么(编写好的代码)受到赞赏,并始终专注于增长,这就是代码审查的全部意义所在。
乔纳森·里奇

1
您可以将此添加到答案中吗?
Codeman

2
+1是您应得的一个不错的答案徽章。对建设性批评的重视程度不足的地方总是让我感到惊讶。告诉人们他们做得很好时他们做得很好,这可能是一个令人惊讶的有效动机。
本杰明·格林鲍姆

@Benjamin:太多的组织将代码审查视为“发现缺陷,让我彼此编码”的橡皮图章过程,而不是“让我们建立一支高绩效的团队”。以我的经验,代码审查是消除阻碍软件团队真正发挥作用的障碍的最快,最好的方法。我们有一种表示法标准,在注释前面加上-2(必须固定),但在+2(出色的工作量)之前。
mattnz

8

有趣:将其保存在水冷却器中,除非以最小剂量使用-修剪密码的脸不是必需的。

积极:当然。顾名思义,评审既包括正面评价,也包括负面评价/建设性评价。

积极反馈可以帮助所有人:

对于那些赞不绝口的人,您可以增强他们的信心,并通过他们的积极反馈来激发他们做更多的同样的事情。

对于剩下的,正如其他人所说,他们将学会做什么,以及什么 不该做。还将鼓励他们表现出色,因此有一天他们也可以成为人们关注的焦点。

我曾经为老板提供过积极的反馈,他的工作积极主动-团队非常成功且富有成果。他继续前进,其他人接任了缺乏称赞出色工作的能力的人。生产力和士气低落,许多更好的团队成员离开了公司。


3

我要说的是,由于文化原因,请保持评论的简洁明了。

您无法避免某些人会错误地对待事情。
为了减轻这种情况,如果无法进行面对面的交谈,电子邮件或Skype,个人一对一的交谈将使事情顺畅进行。


1
好点子。在评论中“有趣”很容易适得其反,特别是在多语言,多文化的环​​境中。
David Navarre

2

在代码审查中进行评论正在管理

将评论视为管理工具

将注释插入代码审查是一种管理形式。因此,应将其作为管理工具。

评论时使用管理实践

有一种管理人员的结构,其目标是达到期望的结果。一些主要的管理方法不会在评论中应用,但大多数会应用。适用主题包括环境,领导力,组织和控制。

环境

文化

环境决定了管理风格。使用任何管理工具时,都应牢记工作场所的文化和环境。通常,这受行业和所管理的公司或实体规模的影响。

样式

如果有轻松的文化,那么可能会以所使用的管理方式出现。如果有非常严格的指导方针,政策和后果,则应在所使用的样式中反映出来。因此,如果每个人都在为星际大战开玩笑,以机器人为参考,而头脑较弱的冲锋队则可能适用喜剧。但是,如果后果严重,不认真对待最终结果,则可能需要避免。

领导

基本原理

发表评论时要考虑的三个主要领导要素。也就是说,它们是愿景,沟通和判断力。

Vision

在解释或给出指示时要牢记远见非常重要。在评论中,这可能意味着指出细微的变化会对整个项目产生怎样的影响,采用不同方法所带来的影响,或者是分离关注点的一小部分。

Communication

成为良好的沟通者在生活的许多方面都很重要。注释没有什么不同。明智的简洁程度很重要-尤其是因为评论不应占用太多空间。尽早提出要点,然后在必要时提供示例进行备份。在较大的组织中,这可能还包括如果问题未局限在一个审阅会议上,则需要发出公报或备忘录。

Judgement

在判断是否需要发表评论以及需要进行哪些更改时,必须使用策略。您的判断不一定总是正确的,但是确实需要始终如一地正确,尤其是在进行大量判断时。

整理

从管理的角度来看,组织是指牢记最终目标并确保使流程一致以遵循一组规则。注释还应牢记这一点,因为注释应尽可能相互构建,以确保遵循设计流程。记住要审查的代码范围也很重要,以减少耦合并遵循总体设计。

控制性

控制被管理者的行为是一个微妙的过程。虽然要坚定,但也应牢记人民是重要的。控制其他人时,需要使用几种管理技能。这些技能是政治,概念,人际关系,诊断和技术能力。

政治

只要人与人之间有互动,就可以发现政治。这是一个巨大的话题,但是从广义上讲,政治是围绕影响力展开的。发表评论时,请牢记工作中的个人和职业政治,这一点很重要。这可能与指令,笑话甚至问题有关。

概念性

通过概念化进行管理是重要的工具。它需要对当前情况进行复杂的分析。发表评论时,包括一些用于得出结论或变更的分析可能是有益的。

人际交往

人际交往技巧在管理时非常重要。这也是一个大话题。与人际交往技巧要考虑的一些重要事项是指导,建设性批评和“鱼叉”。

Mentoring

重要的是,管理应更多地视为导师而不是反对者。在代码审查中,这意味着有时对可以用来改善情况的设计模式或方法表示赞同将是有益的。

Constructive Criticism

批评很重要,因为它需要反思。但是,批评应尽可能保持正面。这意味着要提供有效的证据来支持批评,并确保所使用的语气不是负面的。在检查代码时,这可能包括显示异常或可能的情况,这将在暗示解决方案的同时产生错误,而不是显示在无论如何都需要替换整个代码时不正确的每个位置。

"Harpooning"

“鱼叉”指的是比喻地将某人鱼叉到地面。这是通过一步一步地将他们分解来完成的,直到他们感到无法站起来为止。如果您在代码审查或其他地方用鱼叉捕捞一个人,您将失去他们的合作。重要的是要避免使某人过度崩溃。


执行摘要

将代码审查中的注释视为管理工具。请记住,评论应该简短,切合实际并且具有建设性。还要确保在发表评论时考虑到正在审核的人。


代码审查不应是管理性的。它的另一个名字是“ PEER review”,这是有充分理由的。我对答案的另一个问题是它应该是正在审查的代码,而不是人员。如果将代码审查视为对某人的审查,则它已经(或不久将成为)“殴打人”的管理工具。观看它成为KPI的输入,并观看Peers玩的游戏-“该代码可能会更好,如果您保证在我的下一个代码滴中轻松自如,我会让它滑动”
mattnz

@mattnz-同行经常互相管理。此外,并非所有组织都严格按照自上而下的层次运作,在这种情况下,对等方是管理的关键因素。但是,我确实反对您的说法,即代码审查与个人无关。纠正不良的编码习惯需要实际的指导,而以优雅和尊重的方式发布指导对于成功而言非常重要。
特拉维斯·J

@mattnz-还请注意,我从未暗示过代码审查是该人的审查。我注意到您在这里支持接受的答案,我也同意。但是,奇怪的是,答案明确地集中在个人身上,向他们购买披萨,并亲自给他们赞美。我对此没有任何问题,但是你怎么能说这并没有成为“人的评价”。老实说,似乎您只阅读了该答案的第一句和最后一句。
特拉维斯·J

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.