结对编程 第二阶段

一、实验目标
  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("\n");
  }
   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成功时我和队友非常激动,因为对我们俩来说太不容易了。在结对编程中,体会到了结对编程的优点,遇到问题时可以一起讨论解决,一人编写一人审查更是提高了编程效率,同时两个人可以互相督促,一起收获,一同进步。

posted @ 2020-04-04 21:40  DKLA  阅读(127)  评论(0编辑  收藏  举报