结对编程(JavaScript实现)

一、Github地址https://github.com/Gvonte/arithmetic

二、PSP表格:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

 30

· Estimate

· 估计这个任务需要多少时间

 30

 30

Development

开发

 810

 830

· Analysis

· 需求分析 (包括学习新技术)

 100

100

· Design Spec

· 生成设计文档

 30

 40

· Design Review

· 设计复审 (和同事审核设计文档)

 30

 40

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 20

 20

· Design

· 具体设计

 60

 60

· Coding

· 具体编码

 500

 500

· Code Review

· 代码复审

 30

 30

· Test

· 测试(自我测试,修改代码,提交修改)

 40

 40

Reporting

报告

 100

 90

· Test Report

· 测试报告

 50

 40

· Size Measurement

· 计算工作量

 30

 30

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 20

 20

合计

 940

 950

三、效能分析:

尽量将相类似的操作进行封装,提高代码复用率

1. 一个生成题目集的函数我分为以下几个子函数实现:

 

 

2.  获取一道题目运算流程和答案的函数我分为以下几个子函数实现:

 

3.  检查两道题目重复性的函数我分为以下几个子函数实现:

 

 4. 将一些重复操作编写成函数:

 

 四、设计实现过程:

 五、代码说明:

1.定义运算规则(因为包含分数的运算,所以重新定义运算规则)

将加减乘除和自然数与自然数、自然数与真分数、真分数与真分数3种情况分别讨论

且运算过程中产生的分数不用处理,最后统一将分数进行约分以及真分数的格式化

2. 获取题目的运算过程

先封装了一个函数fn,求无括号的算式运算过程,原理是:先存乘除的运算过程再存加减的运算过程

然后获取题目的运算过程,原理是:先判断有无括号,无括号的话直接调用fn,有括号的话利用栈处理,遇到左括号压栈,右括号弹出,括号内的利用函数fn处理

3. 判断两题是否相同

首先从两题的答案上初步筛选,然后从两题的运算过程比较,如果完全一致则两题相同(如果运算过程有3项,需要考虑一种运算过程相似的情况,例如:["3×1", "2×6", "3+12"]和["2×6", "3×1", "12+3"]不完全相同,但这两道题是相同的)

 六、测试运行:

1. r传参不能小于1

 2. 每次生成的题目不重复且答案准确

3. 运算过程准确

 

4. 核对用户答案正确、错误数目准确

 

5. 保存答案至本地准确

 6. 上传题目准确

 7.上传答案准确

  七、项目小结:

1. 可以在构思的过程,更好的让代码构建更简洁,从而减少优化代码的时间

2. 两人合作编程需要提前规范好代码,不然复查看起来很麻烦

3. 双人分工,模块化编程让一个复杂的工程变得比较简洁明

猜你喜欢

转载自www.cnblogs.com/gvonte/p/11645186.html