结对编程_队友代码分析
项目需求:完成一个能够根据用户身份和用户请求自动生成小学,初中,高中试卷的程序,具体要求就不细说了。
队友代码的赏析:首先我得说说他的优点,不然你看缺点可能会很累(开个玩笑啦),程序的基本功能可以实现,能够对不同用户的不同需求通过随机数生成相应试卷,同时也能够创建txt文件在个人相对应的文件夹目录下,对于稳健操作的相关代码有一定的了解,实现通过循环输入判断输入是否合法,生成的三个等级的试卷有难度区分度并满足出题的基本要求。
不足:
1.从生成的题目来看,首先漏了两个要求,一个是比较难处理的括号问题,该程序并不能生成括号,但是从代码中可以看到,作者是想过添加括号的,而且思路是通过随机数随机产生小于等于操作数数量的括号,但是并没有实现加入到具体的算式中,再就是没有子题目前加上题号,对于括号的问题深究的话可以难到无法想象,首先左括号需要打在
2.题目的相异性问题没有代码实现,是对于同一用户生成的算式并没有判断是否有相同的题目,也就是一个文件加下的所有txt文件不能有相同的行。
3.代码冗长高内聚,在判断和输入用户信息并输出提示的循环中,然后就是不同用户的不同需求中,这两个地方是主要原因。
解决建议:
1.对于第一个不足,首先是括号问题,对于括号的问题深究的话可以难到无法想象,首先第一层次是左括号需要打在操作数的前面,右括号要打在操作数的右边;第二层是通过随机数实现对产生括号数量多少的限制,第三层是需要考虑到左括号是可以在同一个操作数的左边重复出现的,而右括号是不能在同一位置的,这样会造成括号没有意义,另外就是算式最两边同时出现括号出现没有意义,第四层就是对于初中和高中的题目里面可能需要考虑到在包含sin等的算式中的括号内部还有括号,我自己的代码也只能到第三层实现一半,所以也不太好细说,另外就是序号问题,其实单纯打上序号并不难,在生成的题目前面加个递增变量写入就行,只是在后面的相异性问题上面要注意省去前面的序号再进行判断。
2.题目向异性思路为,首先可以使用字符串数组将一个文件下的算式用字符串保留每生成一个就与之前该文件下已生成的题目判断一下,然后就是对于文件夹下所有已生成的文件进行遍历,每个文件逐行遍历比对,所有的都判断完确认没有相同的题目就可以添加进当前文件下,具体的代码不会的可以上网搜寻。
3.对于代码还是有很多地方可以精简的,总结就是,情况较多时,能用case别用if,相同代码需要反复复制粘贴时想到用一个函数,在作者代码中,九个用户三种试卷,就考虑和9x3=27种情况,每种都是差不多的代码而且比较长,为什么不用一个函数呢,一个函数写3种生成试卷的情况,一个函数写9个用户的生成文件的路径情况,通过对外部变量赋值调用两次函数就行。
前言:我想说说自己对于本次个人项目的一些感悟,本项目看似不是太难,但是真正做起来却发现怎样都无法让他变得完美,而且当代码写的越多到后面很简单的改动都不想去改了,原因是代码过长找到对应地方修改还要排查害怕出现其他的问题,所以从一开始还是得仔细思考需求,思考解决方式,实在超出自己的能力范围再另作处理,不要一开始就一个功能一个功能的写入和添加,这样也行,但是要分代码块来写,每个功能对应一个函数,然后测试好函数之后再加到总的模块中,但是总还是会有考虑不到的地方的。。。唉,毕竟刚刚接触项目,经验不够,路还很长,不过坚持吧。