我们如何编写评论代码?
最近,我已经从一家拥有30个左右开发人员的公司转移到同一站点,而如今这家公司已经变成了一家规模较小的公司,在全国共有6个开发人员。
以前,当我进行代码审查时,我会让那个人坐在我旁边,或者我将转到他/她的PC上,并与他们一起检查代码。
在我的新公司中,这是不可行的,因为到处都是人。我已经被提交了两千行代码进行审查,我不能仅仅告诉别人我的想法。
我能想到的唯一方法是编写代码审查文档。因此,我不得不将代码粘贴到Word中,并使用获得的少量边距气泡来注释它。
有没有更简单的方法可以做到这一点?我长期以来一直认为Visual Studio应该具有一个元注释系统,该系统将为我们提供类似的大纲功能,并允许我们在更高级别上编写注释。
有什么工具可以做到这一点?如果不是,人们如何进行分布式代码审查?
解决方案
JIRA可以选择指派某人对工作进行代码审查,然后他/她可以在JIRA中发表评论。
我们在全国各地完全是同一艘船的开发商,白天没有足够的重叠时间……每个人都在异步工作……所以我们不得不想出一个脱机的代码审查工具。
我们最终完成了一个合理的流程:
对于任何不重要的代码,必须进行同行评审。
为了执行审查,作者创建了一个"打包的变更列表"(请检查源代码控制社区中的此类内容)。它基本上是此文件中所做的所有更改的单文件,可扩展ZIP。
作者将带有打包变更列表的电子邮件发送给审阅者(请注意,他们尚未提交!)
审阅者异步地遍历代码,然后将评论放入电子邮件中
如果审稿人有严重异议,则不允许代码进入另一轮审稿;否则,作者可以在修正建议后签入,也可以打开错误以修正建议。
我们可能想读一本《 Smart Bear》一书:Peer Code Review的最佳保留秘密
它是免费的(如果我们在美国,则包括运费),因此没有理由不这样做。另一方面,这是一本很棒的小书,其中包含有关如何最好地进行对等代码审查的真实示例,因此有足够的理由进行订购。
我希望对Visual Studio中内置的此类任务有更好的支持。有一些有趣的加载项可以提供帮助。如果我们使用的是Visual Studio Team System,请查看TeamReview。它使我们可以生成特殊的代码审查工作项,这些工作项以后可以"回放"给某人。
TeamReview屏幕快照http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=TeamReview&DownloadId=32263
查看此问题的建议:
https://stackoverflow.com/questions/403/tool-to-aid-code-review
http://www.review-board.org/
我不久前就看到了这个项目,如果人们使用它,也许可以投票通过。
如果可能,请从测试用例开始-让人员引导我们完成测试用例。它显示了设计以及开发人员正在考虑的解决方案。深入测试用例并查看代码。
另外,看看从构建自动生成的代码覆盖率报告。在测试路径上,这可能是一个很好的指标。
那就是我要开始的地方。
我们的开发人员遍布全球。我们使用Smart Bear的代码协作器。像任何工具一样,它也不是完美的,但是它确实可以完成工作。它是基于网络的,易于学习。
使用TFS架子集功能进行分布式代码审查已经取得了一些成功。使用架子集,开发人员可以"签入"变更集,而无需将其提交到分支。然后,另一位开发人员可以搁置变更集并针对提交的分支检查差异。一旦每个人都对变更集感到满意,他们将被提交到分支。
有一个工具:http://www.smartbear.com/codecollab.php
我们一直在使用的一个非常轻量级的过程是使用Microsoft SharedView和Skype进行配对编程会话并进行代码审查。当然,它不像签到政策那样正式,但可能是在制定标准之前将其制定为签入政策的好地方。
在我工作的公司中,通过SVN生成的补丁每天都会在新闻组中提交。实时代码审查仍然是完成审查的最有效方式,因为我们正在与遍布全球的开发人员一起在虚拟团队中开展工作,因此有时无法让开发人员和审查人员彼此交谈。
为了帮助我们的开发人员进行审阅,我们整理了一份代码审阅清单(位于:http://www.macadamian.com/index.php?option=com_content&task=view&id=27&Itemid=31)。
我们的代码审查背后的秘密:审查小,经常审查。
好吧,我会告诉我们我公司的工作,因为它对我们很好(大约10个开发人员加上PM ppl)。 YMMV。
我们使用Subversion和ClearQuest(曾经使用ClearCase,希望抛弃CQ)来进行变更管理。我们进行更改,使用Subversion创建补丁文件,然后将补丁放到CQ记录中并传递CQ。科技含量低,但行得通。显然,我们可以对其进行修改以与我们使用的任何票务应用程序一起使用。