结对编程模式

2025-05-25

结对编程模式

为什么要结对

在团队中,开发人员希望完成更多工作。经验不足的开发人员需要向经验丰富的开发人员学习。组织需要进行结构化,以避免需要N 平方个沟通渠道。

结对编程:互相督促对方专注于任务。集思广益,改进系统。理清思路。当同伴遇到困难时,主动出击,从而降低挫败感。互相督促,确保团队实践的规范。结对编程。—— Kent Beck

配对允许开发人员...

  • 产生更好的解决方案
  • 即时分享知识和背景
  • 相互学习和技能发展

定义

结对编程是指结对完成开发任务的实践。大多数人认为结对编程是指两个开发人员坐在同一台机器前,共用一个键盘。随着远程办公的日益普及,如今即使相隔千里,也能进行结对编程。

司机

手指放在键盘上;输入代码。

航海家

开发人员指出应该输入什么;决定前进的方向。

大多数结对工作都涉及轮流打字。一个人打字(驾驶员),另一个人思考接下来要做什么以及下一步该做什么(导航员)。这两个角色经常互换。

结对编程时,双方必须用语言表达各自的思维过程,才能确保高效。成功的结对编程不仅依赖于良好的沟通,也依赖于编程技能。结对编程的前提是,在处理复杂任务时,“三个臭皮匠顶个诸葛亮”。

模式

强大的技术

强技术是一种驾驶员不做任何导航员未指示的事情的方法。

为了给驾驶员提供思路,他们必须将系统移交给同伴,然后从导航员的位置进行控制。这种方法完全吸引了观察者的注意力。

传统技术

传统上,结对编程是通过驾驶员-导航员技术推广的。理想情况下,团队成员应该不时地交换角色,以获得更好的结果。

在这种结对编程的模式下,导航员经常会失去兴趣。可能是因为负责打字的人沟通不畅,也可能是导航员不想打扰他。很多时候,司机会说:“等一下,我有个主意……”然后继续工作;导航员就被抛在后面了。

乒乓球(TDD交换)技术

使用此模式,一位开发人员编写失败的测试,另一位开发人员编写代码使测试通过。然后,重复此模式。

这种模式最大的挑战在于找时间重构代码并进行测试。事实上,测试重构所花费的时间往往比编码时间还要多。实现一个功能可能很复杂,测试也会变得复杂。开发人员还必须注意代码的简洁性,以便长期轻松维护。这个想法也适用于测试。

蛙跳技术

这种模式可以用两个处于不同时区的开发人员来最好地描述。一个负责前端代码,另一个负责后端代码。他们致力于一个共同的功能,并承担开发主导角色……推动代码的进展。

橡皮鸭技巧(找个伙伴)

这种情况下,结对开发通常是两个水平相近的开发人员。其中一人在编写代码时遇到了瓶颈,需要“额外的眼睛”。通常情况下,一个不那么“深入细节”的人能够发现原先开发人员遗漏的地方。

暴民技术

Mob 技术可以与代码抽象很好地结合使用来开发概念实现。

这种技术允许多个开发人员同时做出贡献。许多人参考代码并寻找可供使用或验证的实现模式,同时有一两个人负责编写代码。

这种技术也可以用于教学(或指导)角色,为小组提供探索和检查代码模式的空间。

结论

结对编程,如果正确完成的话,是一种强大的工具,但它很容易出错并且......

  • 绝不应该被强迫。
  • 不应期望与传统开发不同的结果或速度。
  • 并不是为了“炫耀”。

图片

Flaticon的Freepik制作的图标已获得CC 3.0 BY许可

领先的EDJE


智能 EDJE 图像

文章来源:https://dev.to/leading-edje/pair-programming-patterns-384o
PREV
Kubernetes 101,第一部分,基础知识
NEXT
为什么视频聊天是一个技术难题