配对编程是否消除了极限编程(XP)项目中的代码审查需求?


14

在一个极端的编程项目中,程序员大部分时间都会进行配对编程。

由于这些对也轮换使用,也就是说,您将程序与不同的人配对,并且具有集体所有权感,因此经常对源代码进行检查和更新。

这样的话,是否需要代码审查?我的意思是,停止编程,实际上只是进行代码审查。


3
结对编程只是XP的一个租户。还有许多其他不遵循XP的敏捷方法。在“敏捷软件开发宣言”中没有任何内容,在敏捷宣言”中也没有提及配对编程的原理。也没有关于代码审查的任何内容。重要的是不要假设所有敏捷都是极端的。

我再改一下我的问题,只包括XP。
Eduardo Copat 2014年

您是否有理由不尝试并确保设置一些条件停止?如果团队对代码的签入感到满意,那应该是一个足够好的理由。
JeffO 2014年

Answers:


13

极限编程的关键资源之一是Ward的Wiki(又名Portland Pattern Repository,又名C2.com)。在这里,许多人讨论了各种方法,并在使用它们时记录了下来。

在此Wiki中,有一个页面:Extreme Programming Code Reviews,其中包括Ron Jeffries和Kent Beck在内的许多贡献者。

为此,他们说:

许多大型流程专家认为代码审查很重要。它们旨在确保符合标准,更重要的是,旨在确保代码清晰,高效,有效并且具有QWAN。他们还打算帮助向团队其他成员传播有关代码的知识。

ExtremeProgramming要求所有开发工作均由两名工程师共同完成。该代码实际上在很大程度上被实时审查。这样可以确保一个以上的人始终对代码有深入的了解。

ExtremeProgramming要求所有对象都具有UnitTests。这些确保对象可以正常工作,并在修改后继续工作。

有些语言是反射性的。用这种语言,UnitTests可以直接检查重要的标准一致性。(例如,对象必须同时实现#=和#hash,或两者都不实现。)

ExtremeProgramming实践CollectiveCodeOwnership,这意味着许多开发人员将浏览需要注意的对象。这往往给那些不符合标准的代码带来压力。鼓励/期望来访的开发人员在发现偏差时使代码一致。这还可以确保将代码知识传播到最初创建代码的那对程序员之外。

因此,ExtremeProgramming项目不需要明确的审查。从您的方法中删除它们。

其他人对该主题也有很多讨论。

关键点在于,结合测试,协作所有权和结对编程,这些东西可以解决代码审查通常应该实现的目标,例如:

  • 分散对正在执行的操作的了解
  • 代码上的第二个(或更多)关注点,以确保它符合标准
  • 验证代码是否正常运行

这些都是通过结对编程和极限编程中的自动化测试连续进行的,因此无需进行明确的Fagan检查

相关阅读:


4
我在另一个问答中认为,代码审查是不必要的浪费(按精益的说法),而结对编程应该是提供代码审查所能提供的所有好处的首选方法。不用说,人们冒犯了我的论点,因为我没有像您一样使用“权威声音”(TM)来支持它。对于每天处理逻辑的一群人来说,我们是不合逻辑的。
迈克尔·布朗

6
在不进行额外代码审查的情况下进行结对编程的风险是,两个程序员在撰写本文时都投入了大量精力,并且他们编写的代码当时看起来似乎完全清晰和合乎逻辑,但几天后再被看到时则写得很少。风险的大小和/或可接受程度取决于您的组织。
Bart van Ingen Schenau 2014年

@MikeBrown你同样可以认为,结对编程是一种不必要的浪费和代码审查等应等
AlexFoxGill

看看我所说的WASTE是什么意思的“精益”定义。想想典型的流水线过程。这个想法是使汽车尽快下线,并在事后检查质量(代码检查)。精益原则支持花费更多的时间和精力来构建(配对编程)质量,因此无需进行后期检查。
迈克尔·布朗
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.