你如何在团队中推广同行代码审查的文化?

问题描述:

我们已经尝试了很多方法,如之前办理入住手续(难以执行) 你如何在团队中推广同行代码审查的文化?

  • 每月代码审查会议要求

    • 代码审查(往往扯开,费时,过高的水平)
    • 一个或两个开发者提供免费的周期审查变更为它们添加(低参与)

    我们使用TFS和可以写一个工具来利用API或建立一个工作流程,这可能有助于促进同行代码审查。

    你发现你在团队中取得成功的是什么?

    我不是上面的噱头和贿赂,喜欢胡萝卜超过棍子。

  • 我们采纳了一些帮助代码评论更有利的事情。

    • 我们明确表示,评论不是 个人,而不是一个怪的情况。 需要鼓励对话,即使 如果不是有人想要 听到。
    • 合理非正式。过程可能会过于死亡。
    • 允许审阅者在他们的 时间内完成。传递信息,并给出日期 完成。
    • 我们有一个常见评论类型的常见问题解答 帮助所有人讲同一种语言的所有人 的问题。
    • 已将实际的时间分配给 评论。不应该将其视为 ,但更多的是作为一个步骤。
    • 保持评论小/专注,并经常做 。不要让它成为一个特殊的事件 。这些应该每天/每周发生 。
    • 另外,没有太多的评论者。 这需要很长时间才能管理。 显然包括熟悉 代码设计的 的评论者(也许他们参与了早期的 高级别和/或详细设计 评论?)。

    还有很多,但一个很好的名单开始!

    相关主题:What is the best way to encourage communication in a team?

    +0

    +几个点的前几个点。这都是关于学习/改进,而不是权力。 – dwarFish 2010-08-25 08:16:48

    +0

    爱德华有很多优点。同时指出,同行评审的主要好处是交叉培训,相互学习,并确保代码可维护。我发现前6-12个月很难让人们进入,但之后他们无法想象其他方式。 – 2010-09-19 20:24:43

    您发现您的团队中有哪些成功的 ? 首先:

    跟踪每个版本的缺陷数量。确保他们知道什么在生产中不起作用。这不是要指责,但你必须让他们在同一页面上。他们必须认识一点点工作,他们可以减少这个数字。

    现在:

    这确实是有益的唯一的事情是,你必须向他们展示为什么它是非常重要的。一旦他们得到了这些,他们就不会希望没有它而活着。让他们采用它的关键是让他们按照他们的条件进行设置。告诉他们,你认为这将是一个好主意,并得到他们的建议,如何实施它。如果你试图告诉他们将会如何,那么你所要做的就是加重他们,他们会拒绝接受它。他们必须经历一个尝试它的学习阶段,并找出如何使其运行。一旦他们“拥有”了这个过程(认为这是他们自己的),他们就会开始执行它,因为这是他们的决定。

    +0

    +1意见,以获得他们的建议。我真的相信,除非一个团队拥有流程/文化,否则他们不会想要改变它。 – Tinman 2013-01-24 05:05:57

    我再也找不到这个链接了,但它讨论的是代码更改的同行评审可能最终集中于将现有的代码库而不是改变本身分开 - 当你考虑什么目的审查是。相反,文章建议对当前文件和以前的版本进行差异化处理,并仅查看这些更改。对不起,我不能将文章归于它的相关作者,但它一直困在我的脑海里。

    顺便说一句,要清楚总是看到整个代码库并让每个人反馈/进行更改都没有错。但是,这不是代码更改同行评审的目的。

    当你正在寻找做一些事情的过程中,你可以改变你的工作项目的工作流程包括“在代码审查”状态。 (这可能是一个可选或必需的状态)

    然后,您至少要列出所有需要代码审查的项目。

    您也可以在CodePlex上看看TeamReview项目:http://teamreview.codeplex.com/

    正如一个数据点,软件咨询公司我工作,使正常的发展过程中的同行代码审查的一部分。每个补丁都以标准格式发送到项目邮件列表以供审阅。只有在有人批准修补程序时才能执行修补程序。

    我认为这种做法应该是各地的规范。

    +0

    你是如何实现它的,以便在未经批准的情况下不能提交补丁程序? – Tinman 2013-01-24 05:07:13

    +1

    通过恐惧和恐吓的后果,如果有人被抓到做到这一点。但严重的是,我认为你应该相信你的团队足以坚持这样的习惯。 – 2013-02-04 15:04:15

    +0

    也就是说,自从我在2.5年前发布该评论以来,我们大多数都转向使用Gerrit,它可以让您执行这些访问限制,例如,只有项目负责人可以在未经审核的情况下提交,例外情况下这是必要的。 – 2013-02-04 15:05:10

    以下对我的团队工作良好。

    1. 每一段代码是再进“构建”审查 。
    2. 评论作为指导进程 (在其他答案中提到),而不是 敌对。与此不同的地方被视为教育机会。
    3. 我们有一个审查系统链接到源代码管理,以便不遵守规定可以被监控(很好)。
    4. *使我们能够对审稿人和审稿人进行统计。
    5. 每个评论有一个评论者,通常是“高级”人的同伴。
    6. 清除编码标准 &预期。
    7. 评论差异不是整个代码 - 避免挑选现有的代码。
    8. 代码作者被期望先检查他们的东西,那是严格执行。因此,尽管我们大部分都鼓励指导过程,但如果编码员只是把垃圾扔到墙壁上,而不是建立起来,我们就把它扔掉。
    9. 我们检查了所有内容:构建代码,检查编码标准,抽样检查单元测试以查看它们是否已经运行,并且也符合要求。
    10. 评论已记录在数据库中,但我们坚持要求我们通过审查谈论,而不是仅仅留下意见,以后经常会被误解。为远程开发人员使用电话+聊天。

    听起来很贵吗?事实上,它在维护成本较低的情况下多次偿还。

    不可能在老团队中实施?不是。我们从没有任何代码审查的角度实现了这一点,设定了期望,并将其保留下来,直到它成为我们流程的基石。建立了一支非常优秀的团队,这个团队的缺陷率非常低,并且吸纳了新人(通常)。当这支球队分手时,这是我职业生涯中最悲惨的一天。