在日常开发中常常在同一组内的成员虽然都负责同一个系统,但基本上是自己开发自己的,这样所带来的问题就是如果一个人请假了并且他负责模块出了问题急需解决,而此时团队的其他小伙伴要一点一点地扒代码,小心翼翼的闭坑,这应该是国内中小公司的常态。而结对编程恰好能解决这样的问题。

结对编程来源于Extreme programming(XP),常常与 TDD 一同使用,对开发人员的要求较高,但是产出的代码质量也会提升,常用的结对编程有两种模式:

driver-navigator

用俗一点的话来讲这样模式就是,新手和老司机,就像考驾照的时候,你坐在驾驶位而教练坐在副驾,教你什么时候该干嘛。dirver-navigator 在公司场景的应用就是一个新入职的员工或者学员由一个经验丰富的程序员带着,这样的好处是能快速填补空缺,让新员工尽快实现自己的价值。

ping-pong

这种模式就是想我们平时玩的乒乓球,你打过来我打回去,适合两个水平相当的人共同开发,结合 TDD 的做法就是一个人先写好一个测试用例,然后交由伙伴去实现这个测试用例,然后再设计一个测试用例教回到之前的伙伴继续做实现,如此往复,这样的好处是两者都熟悉彼此的代码,在开发的过程中都有时间思考更好的思路。

还有就是像那种远程协同的,就需要借助一些工具来进行代码协作,像 VSCode LiveShare,JetBrains 官方目前还没有对应的工具。

以上就是有关结对编程的基础概念普及,个人建议即使用不到也需要了解一下。