在公司大佬@AK的影响下,最近接触TDD的概念比较多,出于对TDD(test-driven development )的好奇,我加入FCC成都的一次结对练习活动。让我受益匪浅。
在这之前我很关心如何保证我的代码质量?能勇敢重构自己的代码的关键是什么?
可能你就需要认识TDD了,TDD是test-driven development 的缩写,就是测试驱动开发,简单来说就是我们写的代码,能尽可能的被测试代码所覆盖,让我们写的代码出错率将到最低,提高开发质量。
测试代码有什么作用呢?
在测试代码里规定好具体的输入,让你的函数保证有具体的输出。
达到的目的是:有测试代码给你作保证,你就能全身心的关注于你的代码构建本身,一旦报错能及时发现更改,相对于写完一大段代码再来测试或者交到测试手里才发现这个错误的修改成本要低很多,因为你的记忆和思路都是新鲜的。这在保证了代码质量的同时,也减少了反复修改的成本。
前言就讲到这里。
说了这么多的废话我们终于要说到结对编程了。
一说到结对编程,我们首先会想到这个。
哈哈哈,纯属搞笑。
实际上我所接触到的结对编程是由两个水平差距不太大的人,拿一台电脑编程。其中一个人A根据需求写测试代码,另外一个人B来实现这个功能让测试代码跑通。
在B编写实现功能函数的时候,A可以有更多的时间来审视B写的代码是否规范,是否有改进的地方,当前的代码是否需要重构等。
我们是在cyber-dojo这个平台来进行我们的结对编程。
那么编写测试代码的第一点是什么?
先让测试代码失败!只有测试代码失败之后,你才能保证你的测试代码是在运行的状态。否则就没有意义。先失败,后改正,再成功。
结对的时候,一定要先写测试代码,然后让伙伴去编写代码让这个测试代码跑通。然后再交换。
在这个过程中一定要频繁交流思路,这样你才能及时发现对方的优点来完善代码。
具体的操作可以上cyber-dojo去和你的伙伴一起试一试。
真的非常有趣,在别人写代码的时候,你会想象如果是自己来写的话,会是什么写法,对比一下别人写的,你就知道哪种更好。
结对编程就是相互学习的过程。
简单粗暴就说这么多!更多的是实践实践实践!