1. 初始设计:
在拿到项目需求之后,我和伙伴经过讨论最终决定做一个java web小项目来实现需求。
登录注册部分,初始的账户沿用了个人项目的几个固定用户,注册部分注册成功后直接进入系统(注册不用存入数据库)
选择试卷类型方面,点击小初高中,则显示该类型的试卷,并根据数量来生成题目(题目生成沿用个人项目)
2. 遇到的问题:
遇到的第一个问题,手机注册码的发送,由于缺少所需的jar包,这个问题困扰了我们很久,最后参照网上的方法加上之前申请的短信网关给做出来了。
题目方面,因为之前个人项目中的题目生成有些问题,所以生成的题目没法做,计算答案很麻烦。最后我们降低了难度。比如高中题目的三角函数只用特殊值,这样难度就降低了很多。
另外,我们还陆陆续续解决了一系列除零、模零、随机数范围有问题之类的bug,并满足了某组ui的提供文件接口的需求。
3. 最终实现:
登录注册:沿用了个人项目的几个固定用户,注册部分注册成功后直接进入系统
题目查重:二叉树结点类。有操作符结点与操作数结点两种,操作数结点又分整数、小数、分数三种。有递归计算、递归解析为表达式和判断两个表达式是否等效功能。对于判断表达式是否等效,思路如下:首先判断根节点是否相等,然后如果两子树非空,递归分别判断两子树是否相等。假如两子树不等,但根节点为+或*,则交换两子树,分别递归判断是否相等(即,加法与乘法可交换);
题目变换:在js文件里写题目变换的函数,实现了点击上下题切换题目,最后统计分数的功能。
4. 个人感悟:
必须要相当愧疚地说,开始工作前我和队友其实对结对的了解都不太深刻,觉得就各写各的、有问题交流一下,最后合并一下就可以了。结果因为对接问题,浪费了很多时间。
总的来说,本次结对编程的总体体验是非常愉快的,首先事前的讨论就让人感觉非常严谨,方案选出了认为最优秀的一个。其次在编写代码的过程中,思维互相补充,许多隐藏的bug当场就被提出,被消灭在萌芽之中。而且还有很多代码优化的步骤在编写代码的时候就被提出并且改进,我认为这非常重要。再次,整个代码是两个人一起完成的,每个人都非常熟悉整个代码,这非常方便后面的bug调试。
原文地址:https://www.cnblogs.com/mengwei159357/p/9757760.html