zoukankan      html  css  js  c++  java
  • 实验二 结对编程第二阶段

    实验二   结对编程第二阶段

     

    一、实验目标

      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、通过这次实验,我也发现了自己有许多缺点,不仅是自己专业知识上的漏洞,还有自己容易被情绪困扰,容易被情绪带着走,就是心情不好的时候,啥也不想干,之后我会努力克服这个问题,加油,未来是美好的。

  • 相关阅读:
    初赛第四场B
    初赛第四场A
    初赛第六场C
    CF 365(2) C 思维,图形模拟 D 树状数组,离线处理,思维
    CF 725C 模拟 725D
    CF 378(2) C D 模拟
    CF 729D 模拟,思维
    CF 729C 模拟,二分
    CF 381(2) D. dfs序,二分,数组模拟维护
    CF 395(2) D.矩形上色,模拟
  • 原文地址:https://www.cnblogs.com/1234wh/p/12615201.html
Copyright © 2011-2022 走看看