结对编程:黄金点游戏
本学期的软件工程课程中对结对编程做出了一些介绍。为了能够更加深入的了解结对编程的精髓所在,我们进行了结对编程方面的练习。
既然要去接触结对编程,首先应该了解什么是结对编程。“结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码”这是百度百科对结对编程的定义。我和我的队友孙一铭用了为期一周的时间去体验了结对编程的过程。
本次选定的结对编程项目是黄金点游戏。
黄金点游戏是一个数字小游戏,其游戏规则是:
N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。
确定了项目之后,队友便对时间做出了规划,将6天时间进行了合理的分配,因为时间不是很多每天都有任务。
1、周二:作出6天时间安排。
2、周三:(停电)进行方案论证,定下总体流程。必要的module,function要记录下来。附带作出分工。
3、周四&周五:考虑到编程能力决定安排两天编码。时间允许后延一天。
4、周六:测试代码(时间可以延后到周日)
5、周日:晚上6点之前可以做一些未完成的事情,6点之后要开始构思博客的写法。
6、周一:完成博客提交作业。
PS:实际合作过程中每天用的时间也不是非常长,平均在2~3小时。
本次编程的我的队友是孙一铭同学,他是十分乐于助人,在此次编程过程中,队友给了我莫大的帮助,他有很强的领导能力,在这次结对编程的过程中他起了主导作用。从确定项目到项目规划再到后期的具体实现,他都做出了明确的规划。队友逻辑能力也很强,将整个项目的结构清晰明了的构思了出来,使得项目在实施的过程中更加的顺畅。
本次编程我们采用的是C++,由于基础比较薄弱,我们并没有实现较为美观的界面设计与实现,而是采用终端输入的方式实现的游戏界面。在编码过程中,我和队友孙一铭遵循C++程序设计编码规范,在编写函数接口定义及其接口实现时,对于每个接口都标记注释以及函数实现的功能。程序设计结束后,和队友讨论确定了多种形式的测试用例,程序经过单元测试、压力测试基本实现题目要求的功能。代码复查时,严格检验程序中是否有明显的Bug,分支判断和循环条件是否合法,变量定义和函数实现是否符合语法规则等。
在算法设计过程中,因为考虑到算法效率和算法实现的难易程度,经过讨论之后采用链表这种数据结构,使得代码逻辑结构清晰,算法实现比较容易,同时代码具有健壮性、稳定性高的特点。
通过本次作业,我懂得了团队协作的重要性,懂得了在一个团队中只有每个队员都完成自己的工作,整个团队才有有更好的成绩。团队协作并不是唱独角戏,如果每个人只顾自己,那么就算是项目完成了,也不会达到预期的效果。所以,感谢我的队友孙一铭同学的幸苦付出,才使得我们的大作业完美实现。
游戏界面的实现:
队友的博客地址:http://www.cnblogs.com/EmperorsHead/p/5967149.html
本次项目的源码已上传至Coding,查看源码请转至: https://coding.net/u/DynastySun/p/GOLD/git