在做个人项目时,只考虑了将题目完整、无歧义、无赘述的显示出来。未考虑如何进行计算,所以计算正确答案时遇到了很多问题。不过好在我在生成题目时,并没有像一些同学一样,以过程为导向,随机括号的位置。这样可能导致赘述,而且需要判断括号是否交叉,还导致难以计算的问题。我使用的是以结果为导向,随机运算符的优先级,根据优先级先添加括号,然后判断括号是否赘述,然后判断是否去除括号。这样避免了括号的赘述问题,也方便表达式的计算。
在这次结对编程中,我负责题目的计算和生成错误答案。在我动手做之前,java有计算表达式的函数,这让使用c++的我忍不住直喊“java是世界上最好的语言!”。不过当我看到他们计算出来的答案都是小数,不显示根号的时候,我觉得我可以做一个结果带根号的项目。因为像√55、√78、sin69这类的表达式根本就不是一个初高中生能计算的。然后我提取这些表达式最基本的单元:单项式。这个单项式包含以下属性:分子,分母,根号,根号下的数。它可以表示整数,分数,根号数,满足我的要求。因为这些复杂的运算,最后都化为单项式和单项式运算,所以我需要重载单项式的+-*/操作,最后根据需要调用+-*/即可。
说实话,这次的结对编程于我而言,作用不大。因为我们没有进行过需求获取、分析,也没有记录文档,而且还是按照之前的编程逻辑,面向过程编程,边写边分析,最后发现方向错了,还得重构代码。我在整个编程中,就像一个无头苍蝇一样,没有方向。这次合作没有带来实质提升,失去了合作的意义。在接下来的团队项目中,我要先动脑,再动手;先设计,再实现。而且尽量与队友沟通,汲取意见,避免闭门造车。