绝望
结对作业一
学号1:211606311 姓名:寇永明 学号2:211606366 姓名:李杰
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 25 |
• Estimate | • 估计这个任务需要多少时间 | 20 | 25 |
Development | 开发 | 700 | 710 |
• Analysis | • 需求分析 (包括学习新技术) | 60 | 70 |
• Design Spec | • 生成设计文档 | 40 | 50 |
• Design Review | • 设计复审 | 30 | 40 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 35 |
• Design | • 具体设计 | 200 | 250 |
• Coding | • 具体编码 | 200 | 250 |
• Code Review | • 代码复审 | 40 | 45 |
• Test | • 测试(自我测试,修改代码,提交修改) | 50 | 60 |
Reporting | 报告 | 60 | 60 |
• Test Repor | • 测试报告 | 30 | 35 |
• Size Measurement | • 计算工作量 | 15 | 12 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 15 |
合计 | 1505 | 1682 |
二、需求分析
我们通过上网查询的方式了解到,小学三年级数学有如下的几个特点:
- 有括号
- 运算符在2~4个
- 减法运算的结果不能有负数
- 除法运算除数不能为0,不能有余数
- 保留为一、二年级加减法计算功能
- 计算的数值太过于复杂,不能大于10000,不能出现负数。
三、设计
1. 设计思路
- 关于出题;搞清楚括号的位置和出题结果
- 怎么把题目用逆波兰法计算出来
- 怎么做到题目的随机性
- 怎么去排除一些特殊的不符合情况
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地...
- 关于出题的话可以采用数组的办法
- 怎么利用好随机数可以进行百度的方法查询
四、编码
1. 调试日志
- 变量名的大量重复和冗余,后面采用统一的代码驼峰式命名风格避免了这些浪费
2. 关键代码
这段代码用于判断是否是+-/()
double getTheResult(vector
{
vector
stack
string strTemp;
double d = 0, d1 = 0, d2 = 0;
for(it = vec.begin(); it != vec.end(); it++)
{
strTemp = (
if(strTemp == "+")
{
d1 = sta.top();
sta.pop();
d2 = sta.top();
sta.pop();
d = d1 + d2;
sta.push(d);
}
else if(strTemp == "-")
{
d1 = sta.top();
sta.pop();
d2 = sta.top();
sta.pop();
d = d2 - d1;
sta.push(d);
}
else if(strTemp == "*")
{
d1 = sta.top();
sta.pop();
d2 = sta.top();
sta.pop();
d = d2 * d1;
sta.push(d);
}
else if(strTemp == "/")
{
d1 = sta.top();
sta.pop();
d2 = sta.top();
sta.pop();
d = d2 / d1;
sta.push(d);
}
else
{
const char *p = strTemp.c_str();
d = atoi(p);
sta.push(d);
}
}
return sta.top();
}
3. 代码规范
- 驼峰式命名风格
- 不直接用中文的方式进行书写
- 要学会进行注释并进行人工检查避免后期检查代码工程量太大。
4.结对编程的过程介绍
- 前面工作准备:两个人一起查阅相关的资料
- 后期执行:代码部分两个人交替进行书写,两个人进行交替检查。
- 要学会进行注释并进行人工检查避免后期检查代码工程量太大。
五、测试
- java MathExam -n 100 -grade 3 //表示出一百道三年级的题
- 测试结果:正常输出
- java MthExam -graade 3 -n 100 //也表示出一百道三年级的题
- 测试结果:正常输出
- java MthExam -graade 45 -n 100 //也表示出一百道三年级的题
- 测试结果:年级输入不合法
六、总结
- 非摆拍的两人的结对工作照:
- 对结对编程的认识和感悟:
1.自己的基础太差,编程过程中影响到了整体进度
2.结对编程解决了我的问题,个人编程的时候几乎每一步都要到处查阅资料,结对编程不懂的地方可以一起讨论。特别是我的英文很差,我的队友英文很好,查阅资料时,他都能基本看懂,因此进度大大提高。
3.之前我很多事情都是自己做,这次结对编程以后,我发现了团队合作的重要性,哪怕就只有两个人。
4.注释很重要,我打代码很少注释,导致队友在看我的代码时,必须得我在旁边讲解,还出现了我都忘记了这段代码有什么用。