TDD+结对编程活动分享
关于活动
为了让大伙能体验编程的乐趣. 易贷项目iOS的小伙伴们组织了一场TDD+结对编程的活动.
概念介绍
首先和大伙介绍几个概念:
为什么需要TDD
我们都做过这样的事——写一大堆代码然后艰难地使它工作起来. 也就是先建造再修正. 测试是在代码写完之后的事情. 这种很难预料的过程被亲切地称为“调试”,我们可能会在其中花掉半个小时. 修改一个bug可能导致产生另一个,甚至是一系列的bug.
我们需要TDD,这是因为我们是人类,人类会犯错误. 计算机编程是一项非常复杂的活动. 除了其他原因,TDD还是自动化测试用例,通过它,我们系统地得到按我们的意图工作的代码,并且可以同时保持这些代码可工作.
什么是TDD
全称:测试驱动开发
TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码.
什么是结对编程
结对编程技术是指两位程序员坐在同一工作台前开发软件. 与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码.
需求介绍
考虑到是晚上编程,时间上比较紧张. 我们用来练手的是一个简单的需求.
描述
实现一个Calculator计算器类,完成加减运算.
例子
- 输入 @”1+1” 返回2
- 输入 @”1+1+1” 返回3
- …
分组实现需求
最开始的用例尽可能的简单,只有@"1"
,实现起来也只是return 1
. 随后的用例一点一点复杂起来,期间我们也多次推倒重构.
在用例的构造上是小伙伴A写用例,其partner写实现代码,然后小伙伴A去优化这段代码要去嵌套层次不得大于两层. 然后交替写用例.
最后完成的时候所有的分组再在一起互相晒代码.
有意思的是,分组内是结对编程,代码互相理解起来无难度,自己和partner之间也很融洽,讨论的兴致也很高昂; 可是当去看其他组的代码的时候,大伙一致评价其他组的代码可读性差.
总结
通过这次活动,我们意识到2个人一起考虑问题要比1个人思考更加全面一些.我们这个小需求都能推倒重写代码,而实际项目中需求变更的则更加频繁. 如果没有一个好的测试保障,我们根本没有勇气推倒重构. 大伙还没有掌握重构的一些方法,还需要努力.
感想
以下是参与的一些小伙伴的感想
TDD+结对编程活动分享
关于活动
为了让大伙能体验编程的乐趣. 易贷项目iOS的小伙伴们组织了一场TDD+结对编程的活动.
概念介绍
首先和大伙介绍几个概念:
为什么需要TDD
我们都做过这样的事——写一大堆代码然后艰难地使它工作起来. 也就是先建造再修正. 测试是在代码写完之后的事情. 这种很难预料的过程被亲切地称为“调试”,并且可以同时保持这些代码可工作.
什么是TDD
全称:测试驱动开发
TDD的原理是在开发功能代码之前,测试代码确定需要编写什么产品代码.
什么是结对编程
结对编程技术是指两位程序员坐在同一工作台前开发软件. 与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码.
需求介绍
考虑到是晚上编程,时间上比较紧张. 我们用来练手的是一个简单的需求.
描述
实现一个Calculator计算器类,完成加减运算.
例子
- 输入 @”1+1” 返回2
- 输入 @”1+1+1” 返回3
- …
分组实现需求
最开始的用例尽可能的简单,大伙一致评价其他组的代码可读性差.
总结
通过这次活动,还需要努力.
感想
以下是参与的一些小伙伴的感想
A:
TDD:通过tdd,可以提高我们的代码质量,在编写代码之前考虑得更全面
结对编程:通过结对编程,个人觉得写代码时需要考虑扩展性,不然后续需要全部推倒重写,对以后的开发同事造成了大量的伤害。
B:
结对编程:有利于提高代码质量和编码速度,提高时间利用率,有个弊端可能彼此的思维想法交换不够充分,走入死胡同
TDD:可以在编码前考虑代码更全面,也能提高编码质量,可以慢慢将TDD融入我们项目中,可以从一些常出问题的请求开始写测试案例了
C:
TDD:测试驱动开发,在编写某一个功能模块之前,先把这部分的测试用例写好,可以在代码编写的早期,发现问题,解决问题,及时重构。
结对编程:两个人用一台设备进行编程,这种方式可以提高工作效率,并且对于某一个问题进行分析时会分析的更加全面,对于这种方式可能还不太适应,日后可以多进行这种训练。
D:
无论是结对编程还是TDD思想,在实际开发工程当中都是很有帮助的。
当然,最有效果的还是通过这种活动引发思考,去解决问题,尤其是结对编程,效果非常明显。
E:
TDD编程很效率,发现和解决问题效率,希望以后能多参加这种活动!非常感谢!