浅谈结对编程
结对编程
结对编程,是一种敏捷软件开发的方法,极限编程的组成部分。结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。一人充当“执行”角色,只负责编程。另外则负责“观察者”(或“导航”),检测bug和把控整体设计。两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。
由于自己长时间都习惯了一个人编程,所以在这次结对编程的初期在做项目的过程中就显得比较尴尬,经常是一个人编程,另一个人就不知所措的坐在那里,也不知道该干点什么说点什么。但是随着项目的推进,在编程的过程中会遇到一些问题,两个人的对于项目的讨论也就慢慢变得多了起来。在很多的实现思路都有很激烈的碰撞,经过一系列的讨论最后达成一个一致得答案。通过讨论之后的实现要比自己一个人实现的时候更加顺畅了,因为讨论之后的实现在整体思路上就没有太大的问题了,而自己一个人编程就很容易遇到实现到一半发现走进了死胡同走不出来了,然后只能够把代码推翻重写。
从结对编程以来,我个人感觉受益是很大的,因为结对编程能够让一部分功能的实现趋近于最优的方式。举个例子来说吧,最开始我个人想的是对于每一个算式,都实例化一个相对应的计算类实例,因为对于每一个算式他的输出结果(分数或小数)是和算式本身相关的,而这个输出结果只有在计算类中进行判别比较直接(省时间),所以我就想在计算类中存储一个算式是否含小数。但是我的partner听了我的想法后就立马否决了,他说完全可以通过传参的方法在计算的时候标志输出结果的形式,而不需要对每一个算式都实例化,因为程序同一时间只对一个算式进行处理,所以只需要设置一个参量标志每次计算时的结果是否要输出小数即可。听了他的陈述后我觉得很有道理,所以最后计划将计算类实现为静态类的形式。在别的函数中直接调用其中的实现。
项目进展
目前项目实现了如下的功能:
- UI初步搭建完毕
- 数类已全部实现
- 计算类实现了一半的功能