实验二 结对编程(第二阶段)

实验二 结对编程(第二阶段)

一、实验目标: 

1)体验敏捷开发中的两人合作。 

2)进一步提高个人编程技巧与实践。 

二 、实验内容:

1)根据以下问题描述,练习结对编程(pair programming)实践;

2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。

3)要求在结对编程工作期间,两人的角色至少切换 4 次;

4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

三、实验过程与记录

1、代码规范

(1)每个函数的定义和说明应该从第一列开始书写,函数名(包括参数表)和函数体的花括号应该各占一行,在函数体结尾的括号后面可以加上注释,注释应该包括函数名,这样比较方便进行括号的配对检查,也可以清晰地看出函数是否结束。

(2)关键字之后要留空格,像 const、case 等关键字之后至少要留一个空格,否则无法辨析关键字。像 if、for、while 等关键字之后应留一个空格再跟左括号(,以突出关键字。

(3)赋值运算符、关系运算符、算术运算符、逻辑运算符、位运算符,如 =、==、!=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=、>、<=、>、>=、+、-、*、/、%、&、|、&&、||、<<、>>、^ 等双目运算符的前后应当加空格。

(4)一行代码只做一件事情,如只定义一个变量,或只写一条语句,这样的代码容易阅读,并且便于写注释。像if、else、for、while、do 等语句自占一行,执行语句不得紧跟其后。此外,非常重要的一点是,不论执行语句有多少行,就算只有一行也要加{},并且遵循对齐的原则,这样可以防止书写失误

(5)边写代码边注释,修改代码的同时要修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除;除非必要,不应在代码或表达中间插入注释,否则容易使代码可理解性变差。

 

参考链接:http://c.biancheng.net/view/158.html

参考链接:https://www.cnblogs.com/lynnwayne/archive/2007/07/11/814673.html

2、程序的总体设计(附图说明模块之间的关系)

 

3、程序结对编程过程(附图)及功能实现情况(附代码和图)

(1)结对编程过程

两个人通过QQ屏幕分享功能来进行远程结对编程

pull request 成功后收到了邮件

自己在修改代码后关于github的操作

(2)功能实现

① 读取初始地图并打印

使用*代表活细胞,fscanf,函数名,应用于C语言中基本的文件操作,一般是从一个流中执行格式化输入,fscanf遇到空格和换行时结束。

在LifeGameMap.txt文件中人为设置了活细胞的个数和位置,初始化的地图如图所示,这里的文件设置为相对路径,在当前所运行的文件夹中去寻找

② 计算新地图

  • 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变);  
  • 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;  
  • 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)。

③ 更新地图并打印

 

更新后的某个地图(细胞经过计算后的生死状态)

最后达到稳定状态

4、项目github地址(附图)

项目github仓库地址:http://github.com/xxx-y/life-game

自己的github仓库

5.遇到的问题及解决

1) 将队友的代码fork到自己的github仓库中在clone到本地后,用VC++6.0打开显示中文的注释是乱码的,但用编辑器打开是正常的,通过网上搜索,发现是编码的问题,将代码用记事本打开后另存为,然后将编码方式由UTF-8改为ANSI,这时再用VC打开中文注释可以正常显示。后来和队友发现当编辑时直接在VC里编辑而不是用编辑器编辑,再打开后就不会出现中文乱码现象了。

(2)由于距离远程结对编程的操作(可选)已经很久了,导致一些命令忘记了,所以当第二次需要fork源仓库时,因为已经fork过一次了,所以无法再进行第二次,就用了最差的一种方法,将自己第一次fork的仓库删除后重新fork一次,后来经过网上查找发现可以通过命令直接将本地仓库同源仓库保持一致,再将本地仓库push回自己的github上就可以同步更新了。

6、实验总结

  通过这次的远程结对编程实验,让我更加清楚和熟练了github的相关操作,特别是关于pull request和fork的相关操作,老师最初讲的时候由于实践的次数很少,并未完全的理解,但通过这次实验,和队友经过互换身份,要进行多次的与源仓库保持同步更新,所以这方面的操作也更熟练了。这次实验历经了很多天,它和别的实验不同的地方在于需要两个人通过远程协同的方式来完成,这就必须要是两个人都有时间的时候,所以在时间上需要两个人的协调;两个人共同完成一个项目,一个作为驾驶员,另一个为领航员,两个人可以一起讨论,在出错的时候也可以互相提醒,这样就降低了代码的出错率,同时不易分心,在做项目时更加认真,这样大大提高了工作效率;实验过程中因为找到了参考代码,所以编写代码的过程中遇到的问题比较少,但在两个人结对过程中还是遇到了很多问题,最后也都通过两个人的讨论和网上查询的方法解决了,通过这次实验让我更深的体会到了合作的好处,同时也复习到了一些C语言的知识,希望下次还有和我小伙伴合作的机会。

原文地址:https://www.cnblogs.com/lhl2z/p/12564205.html