• 结对编程 第二阶段


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

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

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

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

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

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

    三、实验过程
    1、代码规范  

      (1)语句规范:每行至少包含一个简单语句,括号位置匹配,每一个‘{‘必须在代码结束后的相应位置有与其匹配的‘}’;

      (2)命名规范:函数中的方法名用英文显示,申请的变量都用小写显示;

      (4)注释规范:必要的单行注释用‘//’跟在代码下方或后方,注释通常用于重要的代码行或段落提示。虽然注释有助于理解代码,但注意不可过多地使用注释。程序中的注释不可喧宾夺主,注释太多会让人眼花缭乱。边写代码边注释,修改代码的同时要修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除。宏定义的右边必须要有注释,说明其作用。对前期进行测试的无效代码进行删除或注释。

      (5)空行规范:方法与方法之间基本会有一到两个Enter键。空行起着分隔程序段落的作用,空行得体将使程序的布局更加清晰,空行不会浪费内存。

      (6)缩进规范:避免一行长度超过60个字符,基本实现一行一操作代码,增强代码阅读可读性。

    2、程序的总体设计

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

      主要通过QQ进行沟通讨论,利用QQ的屏幕分享功能实现一人编程一人监督。

      (1)在队友的审查下我提交了第一个commit并推送到远程仓库中。

     

     

       (2)在github上接收到队友的pull requests,无冲突点击merge,在git bash中拉取更新git pull命令,此时输入git status命令即可看到我和队友提交的commit。

      

      (3)继续切换身份提交代码,完成编程。

      (4)功能实现情况    

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <windows.h>
    #include <time.h>
    #define L   30  // 游戏画面尺寸
    #define W 60

    // 全局变量
    int cells[L][W]; // 所有位置细胞生1或死0
    void gotoxy(int x,int y)//类似于清屏函数
    {
       HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
       COORD pos;
       pos.X = x;
       pos.Y = y;
       SetConsoleCursorPosition(handle,pos);
    }
    void startup() // 数据初始化
    {
       int i,j;
       for (i=0;i<L;i++) // 初始化
       for (j=0;j<W;j++)
       {
         cells[i][j] = 1;
       }
    }
    void show()  // 显示画面
    {
      gotoxy(0,0);  // 清屏
      int i,j;
      for (i=1;i<=L-1;i++)
      {
         for (j=1;j<=W-1;j++)
         {
             if (cells[i][j]==1)
            printf("●");  //   输出活的细胞
            else
            printf("○");  //   输出空格   
         }
         printf(" ");
      }
       Sleep(500); // 运行画面间隔500毫秒
    void updateWithoutInput()  // 与用户输入无关的更新

      int NewCells[L][W]; // 下一帧的细胞情况
      int NeibourNumber; //统计周围细胞的个数
      int i,j;
      for (i=1;i<=L-1;i++)
      {
        for (j=1;j<=W-1;j++)
        {
           NeibourNumber = cells[i-1][j-1] + cells[i-1][j] + cells[i-1][j+1]+ cells[i][j-1] + cells[i][j+1] + cells[i+1][j-1] + cells[i+1][j] + cells[i+1][j+1];
           if (NeibourNumber==3)
           NewCells[i][j] = 1; 
           else if (NeibourNumber==2)
           NewCells[i][j] = cells[i][j];
           else
           NewCells[i][j] = 0;
      }
      }
         for (i=1;i<=L-1;i++)
         for (j=1;j<=W-1;j++)
         cells[i][j] = NewCells[i][j]
    } 
    void updateWithInput()  // 与用户输入有关的更新
    {
     
    }
    void main()
    {
       startup();  // 数据初始化 
       while (1) //  游戏循环执行
       {
          show();  // 显示画面
          updateWithoutInput();  // 与用户输入无关的更新
          updateWithInput();  // 与用户输入有关的更新
       }
    }

      

      (4)运行截图

    4、项目github地址

      仓库地址:https://github.com/DKLA5/software-test

    5、实验总结

      实验初期非常困难,通过问同学和查看学习通视频资料文字教学了解了做法流程。实验过程中经常遇到错误,通过百度多次修改尝试完成了git操作和代码的编写。第一个pull request成功时我和队友非常激动,因为对我们俩来说太不容易了。在结对编程中,体会到了结对编程的优点,遇到问题时可以一起讨论解决,一人编写一人审查更是提高了编程效率,同时两个人可以互相督促,一起收获,一同进步。

  • 相关阅读:
    bloom(转)
    关于模态对话框某些情况下在opengl下需要按alt才能显示的问题
    程序员的特征
    ffmpeg cross compile
    Tone mapping
    osgXI
    dx11 about post process...
    asp.net网站异常处理方式
    把datatable导出到指定的excel中
    Visual Studio 2008功能提升
  • 原文地址:https://www.cnblogs.com/lldkla/p/12634266.html
Copyright © 2020-2023  润新知