一起写代码,质量会更好
作者:网络转载 发布时间:[ 2017/1/18 11:46:42 ] 推荐标签:软件测试管理 质量管理
在上一篇文章里,我讨论了代码评审的效果。更确切地说,代码评审怎么通常没有效率。
我提议用结对编程来解决代码评审的问题。事实上,结对工作完全不需要任何代码评审。对开发软件来说,和其他人一起工作是有效的机制之一,在这篇文章里,我会说到为什么是这样。
下面采用了和结对编程一样多的抱团编程,但是我只简单地讨论结对编程。
为什么结对工作
传统代码评审过程涉及两个角色:作者和评审者。结对编程把作者和评审者的工作融为一项任务。代码评审工具也由低速,脱节的会话现在变成了高速,实时的会话。
这样问题一旦发生被修复,真的节省了时间。
每一个类,每一个方法,每一行代码都是要解决的小问题。我们写代码时,每一步用这样的方式做“微决定”。在每一个点都有可能犯错误。一些错误是简单的语法错误,我们的编译器或者测试会挑出来。但其他错误不会那么明显:设计缺陷,假设错误,需求误解,或者可能是选择了弱的数据结构。当我们单独写代码时,这些错误可能被忽视。接着我们开始在此基础上构建程序。当我们完成代码时,整个变化可能都是错的。评审结束后,假设评审者指出了这些问题,那么会有大量的返工。
但是有另一个程序员在旁边督视我们写代码,导致返工的那些初始错误会在早期被指出。他们说,“等等!我觉得这可能不对……”我们一起讨论问题,然后纠正它。我们很快回到正确的轨道上。
结对会更快
认为结对工作使那些程序员的产出减少了一倍,虽然看起来可能有道理。但上面的理由说明了为什么结对工作真的比标准的单独开发实践更快。但那只是其中一个原因,我们来看看其他原因。
独奏程序员会困住
我们单独工作时常常会被有些问题困住。有些问题解决相当棘手。我们想快,但是快容易混乱,尤其是当我们感到疲劳或烦躁的时候。我们被困住越久,越不可能看到问题。
如果你在某件事上困住了,把问题解释给其他人听会使问题解决方法显而易见。这样可行是因为当我们把我们的想法解释给第三方听的时候,我们会下意识把问题细化,并且为了确保他们跟得上,语速足够慢。有时候当我们这么做的时候,我们会发现当我们还在忙于描述问题的时候,解决方案奇迹般地出现在我们大脑里了。
结对和抱团的美在于你总是把问题解释给别人听。你在你大脑之外工作,爱冲到自己前面。结对不给你让大脑混乱的机会。
这些都不明显。如果明显的话,那么每个人在很早之前已经结对。
为什么抵抗结对?
许多程序员都反对结对。一提到结对会触发即时防御反应。给出结对带来的清晰好处,为什么有些人如此害怕它?
结对需要不懈地检查和批判。如果你不习惯的话,那么这是对系统的严重冲击。肾上腺素直接冲上来将我们放在高度戒备下。这击溃了我们的精力。对新手来说,结对编程耗尽精力。许多人在第结对编程后感到挫败一点也不惊讶。
那只是和你结对编程的第一个人。当你和下一个人结对编程的时候会怎样?你有听说过有人说他们只能和某些人结对编程吗?有多少程序员有多少程序风格。我们一生都单独写代码,那我们真的只习惯于我们自己的代码。适应另一个人代码风格的能力需要时间和实践。适应许多不同代码风格的能力需要更多的时间。
有效结对
每个人都经历过初始的抵抗反应。解决办法是坚持下去。我们尝试得更多,更容易。
每变得越来越不无聊,直到我们能够每都结对编程。终一旦你已经在足够长的时间里和足够多的人结对编程,你会意识到你可以和任何人在任何时间对任何事结对编程。
我们终达到一个点,在这个点结对开发比单独开发产出更多。
这不是说结对编程从不让人觉得沮丧。我们都有心情不好的时候。但是那些日子应该终变得越来越少,离我们越来越远。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11