谁,什么,何时,何地以及为什么要进行代码审查?

时间:2020-03-05 18:48:36  来源:igfitidea点击:
  • 谁应该被审查?
  • 谁应该进行审查?
  • 应该检查什么代码? (所有代码?重大更改?等等)
  • 审查应该在哪里进行? (是否必须亲自进行?)
  • 何时应进行审核? (递增吗?签到之前?)
  • 为什么要审查代码?

我对此有一些意见,但我会在上面发表答案。

解决方案

回答

每个人,一切...配对程序!将是一个答案。

但是,我认为这取决于我们从事的业务类型以及对质量的重视程度。我曾在一家医疗设备公司工作,并通过首席设计师,QA部门等仔细检查了差异页和UML图,定期进行了代码审查。

为什么有几个答案?

  • 赶上无效的要求。
  • 赶上不符合要求的软件设计。
  • 捕获不适合软件设计的实现。
  • 赶上非标准实施。
  • 在实施中发现错误。
  • 由于编码人员未考虑其他模块,因此在实现时可能会产生副作用。

回答

谁应该被审查?

正在开发要发布到生产中的代码的每个人

谁应该进行审查?

整个团队

应该检查什么代码? (所有代码?重大更改?等等)

这取决于。我们将审查所有代码更改。除非我们在查看代码后认为必要,否则不对属性和ini更改进行检查。

审查应该在哪里进行? (是否必须亲自进行?)

是的,必须亲自进行。除了查看代码之外,我们还可以获取有关常规编码实践,IDE技巧的有价值的信息,然后再继续。亲自复习还使编码人员有机会解释他们为什么这样做,从而为辩论留出了更多空间。

何时应进行审核? (递增吗?签到之前?)

我们将在代码投入生产之前一周进行操作。到那时为止,所有内容都已签入,并且为解决任何问题留了足够的时间。

为什么要审查代码?

这个问题的清单很庞大。首先是捕获可能在生产中产生错误或者错误的代码。其他诸如捕获非标准化代码,草率代码,反模式之类的东西。我们几乎可以说出它的名字。

回答

这个问题已经得到了非常彻底的回答。但是我想补充一点,即使代码很好,(貌似)没有错误,并且遵循标准,代码审查还是有好处的。即,它增加了开发人员实现的功能上的卡车数量。 (如果只是一点点的话。)

但是,我并不建议代码审查应代替适当的注释。

回答

谁应该被审查?

将代码提交到共享存储库中的每个人。

谁应该进行审查?

  • 一个指导者或者高级工程师,将寻找难闻的气味和代码的体系结构正确性中的错误。
  • 团队或者Pod上的同龄人在相同的代码区域中工作,即,如果我们正在计算机游戏中进行3D渲染,则所有其他图形程序员都应查看该代码。
  • 其模块由所提交的代码连接或者依赖于所提交的代码的任何其他人。

应该检查什么代码? (所有代码?重大更改?等等)

以我的经验,所有将由一个以上的人处理的所有代码(这几乎是所有代码)。

审查应该在哪里进行? (是否必须亲自进行?)

当评论是交互式的和实时的时,它是最有益的。话虽这么说,我认为拥有像CodeReviewer这样的系统来轻松分发差异非常重要,这样审阅者可以在进行实际的面对面审阅之前,在自己的开发环境中更有效,更舒适地研究更改。

我与CodeBear没有任何关系,但是当我能够在自己的计算机上查看更改后,由于我已经配置了IDE和工具以及其他所有功能,因此我总是发现我的代码审查更有效。这正是我有效地编写代码以查看代码更改将产生何种影响的方式,而如果我的审核是在另一个人的PC上进行所有15分钟的观看,并看着他们在更改中滚动,那我将无法做到。

何时应进行审核? (递增吗?签到之前?)

在签入之前。我曾经遇到过这样的情况,即增量代码审核等于我在每次审核期间"逐步"为他们编写该人的代码。 :(

为什么要审查代码?

我想到了两个主要原因。

第一个是保持代码库的质量和一致性。对于任何现实世界中的代码库,我们很可能会有不同级别的程序员离开并加入负责维护该代码库的团队,并进行审查以使代码库最小化,从而反映了团队动态,例如上周有2位cr脚的程序员加入了该团队,现在其中20个源文件已经废弃了。

第二个原因是删除了代码中的隧道视觉假设。在某个时候,一个代码库将变得太大,以至于一个程序员都无法理解所有内容。从那时起,每个从事代码工作的人都会对代码的功能以及系统的工作方式有自己的"现实层面",这通常会导致基于天真的或者错误的假设编写代码。因此,让其他人在审阅过程中将现实的观点带入代码中有助于减少这种基于代码的近视问题。