实验二 结对编程第二阶段
一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程
1、代码规范
1)代码编排
a.缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。
b.每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。
c.如无特殊情况,文件一律使用UTF-8编码。
2)文档编排
a.模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。
其中import部分,又按标准、三方和自己编写顺序依次排放,每组之间空一行。
b.不要在一句import中多个库。
3)空格的使用方法(总体原则:避免不必要的空格)
a.逗号、冒号、分号前不要加空格。
b.操作符左右各加一个空格,不要为了对齐增加空格。
c.不要将多句语句写在同一行,尽管使用‘;’也不允许。
4)注释(总体原则:错误的注释不如没有注释)
a.块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔。
b.行注释,在一句代码后加注释。
c. 至少使用两个空格和语句分开,避免无谓的注释。
5)命名的规范(总体原则:新编的代码必须按下面命名风格进行,现有库的编码尽量保持风格)
a.尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。
b.函数命名使用全部小写的方式,可以使用下划线; 常量命名使用全部大写的方式,可以使用下划线。
c. 类名使用驼峰命名风格,首字母大写,私有类可用一个下划线开头。
2、程序的总体设计
3、程序结对编程过程及功能实现情况
1)首先我和叶子讨论了Python代码的规范,好久没有学习Python了,真的好多都忘记了,一些语法也忘的差不多,所以我们两个就百度了一下,然后进行讨论分析,整理,得到了如上的代码规范,觉得每个语言都有它的特殊性和复杂性,这就需要我们在编程的时候多多注意了。(我们的每次讨论都是通过QQ屏幕分享的)
2)结对编程第一阶段的时候,叶子百度了一篇生命游戏代码,我们两觉得这代码还挺好的,然后就借鉴了那篇代码,之后,我们各自先研究研究代码。
3)当我想要运行那篇代码时,出现了许多错误,首先是numpy和matplotlib模块缺少,我就百度如何添加这两个模块,发现需要安装与Python相匹配的numpy版本,之后在这里卡住了(因为我百度了,也不知道哪个版本是适合的版本),我就告诉了叶子,叶子说她也花了好长时间安装numpy模块,结果安装上了,还是不能运行成功,最后她找到了一篇文章,pycharm可以自己安装numpy模块,不用去下载,我们也是花了好长时间在安装模块上面。总结下来,还是我们对pycharm软件不熟,不知道它有什么功能,有什么东西,以后还得多用用,才能发现新的东西。(不过pycharm真的挺好用的)
4)接下来几天,我们对代码进行讨论、修改和优化升级。
首先,我们对生命游戏程序总体进行了设计:先输入地图的面积大小,然后对细胞生命状态进行初始化,确定地图变化的间隔时间,然后计算周围8个细胞的生命状态,来确定下一次的生命状态....接着我们对游戏进行了模块划分,分为:细胞生命状态初始化模块、游戏规则模块、动画模块、主函数模块。我们对这些模块进行了分工合作。
a.我负责细胞生命状态初始化模块和动画模块的编程,叶子负责领航,在编程过程中,有好多代码的语法忘了,幸亏有了叶子在边上的提醒,我才完成了这些模块,但是在fetch远程仓库的时候,明明之前这些命令弄了好几遍,当时都很熟,但是在这次,我忘了一些,记得merge,但是忘了建立分支,记得建立分支,但是忘了merge,我这个脑子真的不好用,导致修改一次文件并提交花了很长的时间,还是多得练练。
b.叶子负责主函数模块、游戏规则模块以及接收动图的长度值的编程,我来负责领航,这样分工合作很互补,也会让进程快很多。
c.当所有模块弄好的时候,发现出来的图不能动,我们两个也很困惑,它为啥不动了,叶子觉得那个间隔时间部分有问题,然后她对其进行修改,发现没有问题,最后百度了pycharm有个默认设置,将这个设置不勾选的状态,运行出来的图就可以动了。
d.最后我们对代码进行了升级优化,把一些冗余的代码给删除,复杂的转换成简单。
e.功能实现结果
f.push和merge过程
4.项目github地址
四、实验小结
1、俗话说,“众人拾柴火焰高",虽然结对编程只有两个人,但我感觉我们两个“女女搭配,干活不累,还事半功倍“,说实话,两个人合作真的挺好的,因为一个人想不到那么的全面,而且两个人轮换身份,加快了实验进度,提高了代码的质量,最后保证实验成功完成。
2、这次实验很感谢叶子,主要我在实验的过程中,有些东西弄不出来,加上家里事情有点多,心情有点烦,幸亏了有了叶子,她鼓励我,帮助我。
3、通过这次实验,我也发现了自己有许多缺点,不仅是自己专业知识上的漏洞,还有自己容易被情绪困扰,容易被情绪带着走,就是心情不好的时候,啥也不想干,之后我会努力克服这个问题,加油,未来是美好的。