一, 实验目标
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 成功时我和队友非常激动, 因为对我们俩来说太不容易了. 在结对编程中, 体会到了结对编程的优点, 遇到问题时可以一起讨论解决, 一人编写一人审查更是提高了编程效率, 同时两个人可以互相督促, 一起收获, 一同进步.
来源: http://www.bubuko.com/infodetail-3492259.html