Java结对编程之挑战出题
需求分析
- 需求
- 对于挑战出题来说最主要的就是要产生的式子并将重复的式子去掉。
设计思路
具体的思路:
思路一:
原先我打算用集合中的元素的不重复性进行去重,这种思路的好处就是在运算符少的时候重复的概率越低,在参加运算的数字比较少的是好用。后来发现在产生大量的运算符参加运算时去重去掉的式子太多,就是说在运算符越多重复数字越多时去掉的式子太多从而大大的降低了运行的速率,就是说时间太长所以就放弃了这种方式。思路二:
后来在于同学交流之后就选择了用另外一种去重的方法,就是将结果相同的式子去掉,这个思路的好处就是运算符越多重复的可能性就越低可以产生比较多的式子。
实现过程中的关键代码解释
- 入口类
import java.io.IOException;
/**
* Created by 春旺 on 2017/6/4.
*/
public class ExpressionGenerator {
public static void main(String[] args) throws IOException {
OutQuestion questionNumber = new IOPractice();
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
questionNumber.problem(num1,num2);
((IOPractice)questionNumber).inFile(args[2]);
}
}
这是为了用工具类在命令行下实现而设计的。
运行过程截图
- 依次运行的结果
测试
代码托管地址
- 要运行的是不在文件夹下的ExpressionGenerator类
- 编译时请老师编译Src文件夹下后缀为.Java的文件。
- 我们的结对编程的项目在最后的时候克隆在本地地有点问题所以改提交在了我的个人项目中
遇到的问题及其解决方法。
问题1去重
解决:我去网上找了很多资料之后还是没有找到一个比较好的方法来去重后来就选择了在设计思路中说到的两种方法来进行测试。
这个问题还没有找到很好的方法来解决。问题二 测试工具
测试工具必须在src文件运行后产生的class的文件夹中运行并且代码中不可以有包名否则无法运行
对结对的小伙伴做出评价
- 结对伙伴: 20162312 张家铖
结对伙伴的思维比较活跃,在写代码遇到困难时有助于我做出突破,他比较善于和同学交流在我们遇到瓶颈的时候总是可以找同学交流之后找到一个比较好的方法;
但是也是比较粗心,而且对于时间的把握还有待改善。最主要的是在写代码的注释的时候有些时候有些难懂,并且在写代码时太慢;
给结对伙伴分:
- 分数 40
- 依据
1.代码相对来说我提交的比较多一些。
2.设计文档都有参与不分多少。
3.测试中的参与度比较少。
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
Planning | 计划 | 1 | 1 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 20 |
· Analysis | · 需求分析 (包括学习新技术) | 0.5 | 2.5 |
· Design Spec | · 生成设计文档 | 1 | 1 |
· Design Review | · 设计复审 (和同事审核设计文档) | 0.5 | 0.5 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 1 | 1 |
· Design | · 具体设计 | 2 | 2.5 |
· Coding | · 具体编码 | 2.5 | 2.5 |
· Code Review | · 代码复审 | 2 | 2.5 |
· Test | · 测试(自我测试,修改代码,提交修改) | 2 | 1 |
Reporting | 报告 | 1 | 1.5 |
· Test Report | · 测试报告 | 2 | 1.5 |
· Size Measurement | · 计算工作量 | 1 | 1.5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 1 | 1 |