快的并痛苦着
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 600 | 720 |
• Estimate | • 估计这个任务需要多少时间 | 600 | 720 |
Development | 开发 | 600 | 900 |
• Analysis | • 需求分析 (包括学习新技术) | 30 | 40 |
• Design Spec | • 生成设计文档 | 30 | 40 |
• Design Review | • 设计复审 | 30 | 40 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 40 |
• Design | • 具体设计 | 60 | 70 |
• Coding | • 具体编码 | 300 | 400 |
• Code Review | • 代码复审 | 10 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 20 | 40 |
Reporting | 报告 | 10 | 40 |
• Test Repor | • 测试报告 | 30 | 40 |
• Size Measurement | • 计算工作量 | 30 | 40 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 40 |
合计 | 900 |
二、需求分析
- 要根据实际情况,结合实际,并不是所有的小学一年级生水平都一样,需要有一个范围
- 只有加减法
- 不能有负数小数
- 100以内的运算
经过分析,我认为,这个程序应当:
- 控制在一、二年级生能完成的水平内
- 都是整数,不能有小数,因为小数点一年级还没学哈哈
- 不能出现负数
- 数据范围严格控制好,不要超纲
三、设计
1. 设计思路
- 说明你如何设计这个程序
- 用户输入的参数,需要判断是否符合要求
- 题目随机生成,需要符合一二年级的算术规则
- 不能产生负数
- 范围100以内
- 运用随机数random()
- 文件的生成与写入
- 将题目和答案存入out.txt文件
比如:
- 最重要的,判断用户输入的数字是否符合规定,不符合的话,应该怎么提示,这又应该怎么控制
- 用到比如Integer.parseInt,一开始很困难,通过借鉴请教别的同学的以及查阅资料掌握
- 一二年级的数字范围
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地.
- 技术关键点:如何用命令行输出参数
四、编码
- 没有考虑到用户输入输入的参数不是整数数字的
- 开始有很多问题,比如不会生哼随机数,不会写入文件等等,通过复习和查阅资料弄清楚
1. 调试日志
- 一开始出现的大小bug简直是天花乱坠,后来经过很漫长的分析修改,一步一步的来,终于稍微好点了(感觉现在自己的代码还是有很多bug)- 。-
- 算术题出现晓得一个数减去大的一个数理应是负数,但是小学一年级不会负数,所以需要换一下位置,用大的减去小的
- 当输入不是整数的时候,包括输入英文等其他内容,需要提示重新输入
2. 关键代码
private static int n1,n2,x; //定义三个静态成员
private static String[] str1 ;
private static String sun; //创建新对象字符串
public static void main(String args[]) throws FileNotFoundException, InterruptedException {
// TODO Auto-generated method stub
int i =Integer.valueOf(args[0]).intValue(); //题目
int g =Integer.valueOf(args[1]).intValue(); //年级
//输出保存在文件中
File file = new File("out6388.txt");
PrintStream ps = new PrintStream(file);
System.setOut(ps);
choiceGrade(i, g);
3. 代码规范
- 有关缩进的问题,一定要符合规范,一个是整洁,一个是养成好习惯
- 括号的问题,有的是(),有的是{}一定要区分清楚
- 代码的命名不规范向,这次写的代码命名就很不规范
- 用不上的代码直接注释掉//
五、测试
- 1.MathExam 输入参数: 5 测试结果:生成符合数目的几道一年级题目和答案 结果: 符合
- 2.MathExam 输入参数:5.2 测试结果:输入有误,请重新输入 结果:符合
- 3.MathExam 输入参数:aaaaa 测试结果:输入有误,请重新输入 结果:符合
- 4.MathExam 输入参数:0 测试结果:输入有误,请重新输入 结果:符合
六、总结
- 一开始体验了什么叫无头苍蝇一样手足无措...
- 是否使用了“软件开发的基本策略:分而治之”,是否需要重构
- “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,你是否采用了相关的手段,是否需要重构
- 一定要充分考虑到需求的重要性,比如当客户没有输入预期值该怎么处理等等
- 当遇到不会的东西首先自己去查找学习并做好几率,再不行就去问问同学老师,争取自己独立解决。
- 先写注释再写代码思路会清晰很多很多!!