我最近一直在进行大量代码审查,但是我不确定在代码审查中添加正面和/或有趣的评论会带来正面和负面的影响以及专业性。
我们使用Github作为我们团队中的代码审查平台,因此任何人都可以查看注释。我通常会尝试使用该平台,因此从头到尾的整个过程都是可见的和历史性的。
我最近一直在进行大量代码审查,但是我不确定在代码审查中添加正面和/或有趣的评论会带来正面和负面的影响以及专业性。
我们使用Github作为我们团队中的代码审查平台,因此任何人都可以查看注释。我通常会尝试使用该平台,因此从头到尾的整个过程都是可见的和历史性的。
Answers:
重要的是要强调正面和负面。我知道如果我正在将一个特定的地狱子系统的重构重新整理为整洁的东西,我可能会为程序员的努力买一个比萨饼。
如果您正在使用评论作为培训,那么它就变得非常重要-突出显示一段好的代码将对初级程序员同时审查该代码很有帮助。他们将有机会提出疑问,说明为什么一种特定的方法或技术比另一种更好。
我要说的是,由于文化原因,请保持评论的简洁明了。
您无法避免某些人会错误地对待事情。
为了减轻这种情况,如果无法进行面对面的交谈,电子邮件或Skype,个人一对一的交谈将使事情顺畅进行。
将评论视为管理工具
将注释插入代码审查是一种管理形式。因此,应将其作为管理工具。
评论时使用管理实践
有一种管理人员的结构,其目标是达到期望的结果。一些主要的管理方法不会在评论中应用,但大多数会应用。适用主题包括环境,领导力,组织和控制。
环境
文化
环境决定了管理风格。使用任何管理工具时,都应牢记工作场所的文化和环境。通常,这受行业和所管理的公司或实体规模的影响。
样式
如果有轻松的文化,那么可能会以所使用的管理方式出现。如果有非常严格的指导方针,政策和后果,则应在所使用的样式中反映出来。因此,如果每个人都在为星际大战开玩笑,以机器人为参考,而头脑较弱的冲锋队则可能适用喜剧。但是,如果后果严重,不认真对待最终结果,则可能需要避免。
领导
基本原理
发表评论时要考虑的三个主要领导要素。也就是说,它们是愿景,沟通和判断力。
Vision
在解释或给出指示时要牢记远见非常重要。在评论中,这可能意味着指出细微的变化会对整个项目产生怎样的影响,采用不同方法所带来的影响,或者是分离关注点的一小部分。
Communication
成为良好的沟通者在生活的许多方面都很重要。注释没有什么不同。明智的简洁程度很重要-尤其是因为评论不应占用太多空间。尽早提出要点,然后在必要时提供示例进行备份。在较大的组织中,这可能还包括如果问题未局限在一个审阅会议上,则需要发出公报或备忘录。
Judgement
在判断是否需要发表评论以及需要进行哪些更改时,必须使用策略。您的判断不一定总是正确的,但是确实需要始终如一地正确,尤其是在进行大量判断时。
整理
从管理的角度来看,组织是指牢记最终目标并确保使流程一致以遵循一组规则。注释还应牢记这一点,因为注释应尽可能相互构建,以确保遵循设计流程。记住要审查的代码范围也很重要,以减少耦合并遵循总体设计。
控制性
控制被管理者的行为是一个微妙的过程。虽然要坚定,但也应牢记人民是重要的。控制其他人时,需要使用几种管理技能。这些技能是政治,概念,人际关系,诊断和技术能力。
政治
只要人与人之间有互动,就可以发现政治。这是一个巨大的话题,但是从广义上讲,政治是围绕影响力展开的。发表评论时,请牢记工作中的个人和职业政治,这一点很重要。这可能与指令,笑话甚至问题有关。
概念性
通过概念化进行管理是重要的工具。它需要对当前情况进行复杂的分析。发表评论时,包括一些用于得出结论或变更的分析可能是有益的。
人际交往
人际交往技巧在管理时非常重要。这也是一个大话题。与人际交往技巧要考虑的一些重要事项是指导,建设性批评和“鱼叉”。
Mentoring
重要的是,管理应更多地视为导师而不是反对者。在代码审查中,这意味着有时对可以用来改善情况的设计模式或方法表示赞同将是有益的。
Constructive Criticism
批评很重要,因为它需要反思。但是,批评应尽可能保持正面。这意味着要提供有效的证据来支持批评,并确保所使用的语气不是负面的。在检查代码时,这可能包括显示异常或可能的情况,这将在暗示解决方案的同时产生错误,而不是显示在无论如何都需要替换整个代码时不正确的每个位置。
"Harpooning"
“鱼叉”指的是比喻地将某人鱼叉到地面。这是通过一步一步地将他们分解来完成的,直到他们感到无法站起来为止。如果您在代码审查或其他地方用鱼叉捕捞一个人,您将失去他们的合作。重要的是要避免使某人过度崩溃。
执行摘要
将代码审查中的注释视为管理工具。请记住,评论应该简短,切合实际并且具有建设性。还要确保在发表评论时考虑到正在审核的人。