第三次作业结对编程
Fork仓库的Github项目地址 | 项目地址 |
---|---|
学号尾号 | 24240 |
伙伴作业地址 | 伙伴作业地址 |
一、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 600 | 300 |
Analysis | 需求分析 (包括学习新技术) | 600 | 360 |
Design Spec | 生成设计文档 | 120 | 120 |
Design Review | 设计复审 (和同事审核设计文档) | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 30 |
Design | 具体设计 | 240 | 180 |
Coding | 具体编码 | 300 | 360 |
Code Review | 代码复审 | 60 | 45 |
Test | 测试(自我测试,修改代码,提交修改) | 360 | 60 |
Reporting | 报告 | 60 | 60 |
Test Report | 测试报告 | 60 | 60 |
Size Measuremen | 计算工作量 | 60 | 60 |
Postmortem & Process Improvement Pla | 事后总结, 并提出过程改进计划 | 120 | 60 |
合计 | 2640 | 1815 |
二、计算模块接口的设计与实现过程
设计
由于项目功能比较简单,所以只需要设计两个类:窗口类,和骰子类。
- 窗口类Form1:包含窗口中控件的事件触发时需要的方法;
- 骰子类Touzi:用来表示骰子,包含属性num(表示骰子点数),方法Dice(表示掷骰子,功能是使num获得随机值)。
实现
实现过程中碰到很多难题,一开始不知道怎么显示图片,怎么播放音乐,通过不断查阅资料,怎么不用详细路径打开文件,最终将这些问题一一解决。最终我们得到的程序与预想中的并无太大偏差。
代码原则体现
- Information Hiding
将骰子类中的num字段封装成Num属性。
三、代码复审过程
我们在编码过程中就是分别扮演驾驶员和领航员的角色,一人写代码,另外一人在一旁提醒,两人相互交换,不停工作,相当于写代码的时候就检查了一遍,加之我们的程序代码量少,所以复审过程中并没有发现什么问题。
不过我们在复审过程中发现代码可读性很低,因此增加了一些注释,同时尽量规范了代码。
四、计算模块部分单元测试展示
Touzi touzi = new Touzi();
[TestMethod()]
//测试Dice方法是否总是能赋予Num一个1到6的值
public void DiceTest()
{
bool judge = true;
for (int i = 0; i < 10; i++)
{
touzi.Dice();
if (touzi.Num<1||touzi.Num>6)
{
judge = false;
}
}
Assert.IsTrue(judge);
}
Touzi类中的Dice方法功能是掷骰子,使骰子获得随机点数,上面的代码是用来测试Touzi类中的Dice方法是否总是能赋予num一个1到6的值。
思路是通过for循环调用Dice方法10次,只要有一次不符合要求变不能通过测试。
五、结对的过程
结对过程中,我们共用一台电脑,一人负责编写代码,一人负责提醒,两人不断轮换角色,最终完成了这次结对编程。
六、附加功能
我们在程序中添加了炫酷的bgm,使游戏更加带感。