结对编程:带UI的小初高数学学习软件

我和队友的个人项目分别使用了不同的语言,我使用的是C++,她使用的是Java,因为她已经有过使用Java搭建图形化界面的经验,我们选择了用Java来完成这次的项目。

结对编程的项目包括两个部分:图形化界面的搭建,以及底层的实现。我的队友完成了图形化界面的搭建;我用C++实现了不带UI的底层功能,但是在队友把它迁移到Java的过程中,考虑到代码复用、代码改动的难易等,并没有每一个部分都采用。

对于单个题目的获得,我们复用了我在个人项目中的代码,即每次先取一个随机数作为操作数的个数,然后在没有取够操作数的情况下,考虑将取得操作符的合法性,随机取得对应难度的操作符,直到得到一道完整的题目。队友把这一部分的C++代码改为Java版本。

密码的合法性判断以及对于题目的计算,队友把我的C++代码迁移到了Java。我首先对题目进行预处理,将每一个操作符转换为字符,然后利用栈结构,首先处理平方、根号及三角函数,然后处理括号,最后处理乘除和加减得到表达式的计算结果。由于第一个版本我没有进行足够的测试,以及不同开发工具的不同边界保护策略,在提交给队友后,发现缺少边界判断条件,以及连减、连除出错。队友添加了边界条件。我修改计算算法,添加了变号操作,以避免连减、连除时计算顺序倒置导致的错误。账户的读写部分,我用的map结构,以便遍历及修改,但是由于C++和Java相关的迁移比较复杂,队友参考了思路,重写了这部分的Java实现。

通过这次结对编程项目,我学习了如何与人合作完成项目。也得到了一些教训。我们一开始决定用不同语言来实现,在整个项目过程中平添了很多麻烦,如果能一开始就想清楚这个问题,应该可以避免这些问题。

posted @ 2020-10-09 21:12  Zugzwang  阅读(61)  评论(0)    收藏  举报