实验二 结对编程--第二阶段

一、实验目标
  1)体验敏捷开发中的两人合作。

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

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

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

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

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

三、实验过程

1、代码规范

(1)函数命名、 变量命名、 文件命名要有描述性,少用缩写,尽量做到见名知意。

(2)文件名要全部小写,可以包含下划线 (_) 或连字符 (-),依照项目的约定.。如果没有约定,,那么 “_” 更好。

(3)一般来说,函数名的每个单词首字母大写 (即 “驼峰变量名” 或 “帕斯卡变量名”), 没有下划线.。对于首字母缩写的单词, 更倾向于将它们视作一个单词进行首字母大写 。

(4)使用前置自增。不考虑返回值的话,前置自增 (++i) 通常要比后置自增 (i++) 效率更高。因为后置自增 (或自减) 需要对表达式的值 i 进行一次拷贝.。如果 i 是迭代器或其他非数值类型, 拷贝的代价是比较大的。

(5)不使用流(除非是日志接口需要),使用 printf 之类的代替。

(6)注释:// 或 /* */ 都可以,但 //  常用。要在如何注释及注释风格上确保统一。

(7)函数注释:基本上每个函数声明处前都应当加上注释,描述函数的功能和用途。只有在函数的功能简单而明显时才能省略这些注释。注释使用叙述式 (“Opens the file”) 而非指令式 (“Open the file”); 注释只是为了描述函数,而不是命令函数做什么。通常,注释不会描述函数如何工作,那是函数定义部分的事情。

2、总体设计

代码有四个主要功能模块:随机初始化、清屏、下一时刻以及输出0/1矩阵

 各功能模块的实现如下图所示:

3、结对编程过程

对所选题目进行再次分析之后,我组决定使用C++在VC6.0上编写代码。

经讨论,我们组决定每人承担部分功能,编写代码时,由写代码的人开启屏幕分享。

在编写print()函数时,我没有弄清楚i、j和width、height的对应关系,导致输出的矩阵大小与设定的大小不同,经杜蒙蒙同学提醒,将错误改正。同时注意到C++习惯于使用前置自增,而平时我们多使用后置自增。为更好符合代码规范,将原本写的后置自增改为前置自增。main()函数由杜蒙蒙同学编写,编写后运行无误,但是运行结果只能进行单次单步演化,为使功能更加完善,杜蒙蒙同学添加了switch,使得运行结果可以进行单次单步演化也可以进行多次单步演化。

4、主要功能模块

(1)随机初始化

    ① 实现代码

        

    ②运行结果

   

(2)下一时刻

      ①实现代码

                                                                                                                                                ②运行结果

(3)输出矩阵

      ①实现代码

         

      ②运行结果

          如上图

5、提交到GitHub

此次试验GitHub仓库地址是https://github.com/cloudy-y/game_of_life

我和杜蒙蒙同学对各自负责的模块进行了多次commit

在其中一次pull request 时,发生了冲突,无法进行merge。经查阅资料发现,这是因为我们在相近的时间修改了相同的一段代码,导致在github中不能够自动merge。此时合并过程发生冲突, git 会把修改记录直接保存在文件中,让开发者判断文件如何解决合并。要解决冲突,只需要将发生冲突的文件中不需要的内容删掉,再分别执行①git commit -a②git checkout master③git merge 小伙伴-master即可。

四、实验小结

1、通过此次结对编程实验,加强了自己对于问题看法的表达能力,同时在小组讨论时思维更加集中、跳跃,效率得到很大提升,体会到了结对编程的好处。

2、对于git的操作更加熟练,也发现了GitHub的强大之处。

猜你喜欢

转载自www.cnblogs.com/cloudyyy/p/12587660.html