- 任务分工
根据任务要求,我们将工作分为两个部分,分别为用户与题目的处理,以及UI和验证的处理。在个人项目中我们分别用c++和java完成了各自的任务,而短信验证没有c++的,所以选择使用java完成这次 任务。因为我(翟)没有了解过java,所以主动选择了用户和题目的处理部分,由他(程)完成UI部分。
- 代码复用
因为个人项目与结对编程项目的需求存在一些不同,可以复用的基本只有生成题目的部分,通过上次的代码欣赏,了解了彼此代码的优缺点,在这次重写中有所体现。在操作符的部分选择了他的代码中用函数来分别生成小学,初中以及高中的操作符,在代码中的体现就是将操作符的判断取出来,减少了较多的逻辑判断;而在题目生成的主题框架上面还是使用了我的c++代码中的逻辑,并在这上面添加了一些修改,减少了一些没有必要的括号。
- 用户与题目的处理
主要实现新用户的存储,登陆用户信息的提取,题目生成,答案生成以及题目查重,其中大部分都在个人项目中实现,只有答案生成是完完全全的新增的,所以任务还算轻松,不过得用没有了解过的java写还是有点磕磕绊绊。主要的工作在于答案生成,有现过很多方法,比如:根据操作符的优先级划分为三个函数,相互调用获得结果,也曾想过一边生成题目一边计算结果。有过一团乱麻,没有头绪,将所有代码都删掉的时候,现在想想也还蛮有意思的。
- UI和验证的处理
我们的UI是利用java swing实现的。总体上来说,就是将各个不同的功能封装成不同的界面,在用到这个界面的实例的时候,直接生成一个该界面的实例就可以了。每次生成新界面的时候都会销毁上一次的界面,通过这样的相互调用实现界面的更新。对于不同的界面的类,其属性也不一样,有一些成员属性可能会在多个类中用到,所以还要给出相应的接口。对于做题的界面,UI是从后台拿到带有答案的题目的字符串,然后对该字符串进行处理,生成相应的题目及对应的四个选项,最终生成题目的分数,并且会提示继续做题还是退出。
- 总结
这次编程,收获最多的或许不是编程相关的。在这几天里,碰到过合并代码时的bug,明白了说清楚接口的信息是多么的重要。这几天,沟通过,讨论过,彼此都付出过,或许我们的成果不是最好的,但是一定不差,总之,这几天的合作,让我感觉到团队合作应该有的样子,让我对接下来的团队项目充满期待。