个人项目互评:中小学数学卷子自动生成程序

一.项目要求:

 

二.项目评价参考方向

1.代码规范与巧妙性

总体来看:

 

 从安某同学的项目文件的建立来看,他还是花了一些功夫去阅读Google的c++编码规范,有意识的使用了.h文件来声明函数,更难能可贵的是还添加了说明,这是我看项目不大所以偷懒没有做的,而他却坚持了下来,值得学习。但从他同样用.h文件来定义函数不难看出,他虽然看了,但却看得不多,我们一般是用.h文件来声明,.cpp文件来定义,这是一个值得注意的地方。再进入项目看细节。

头文件及命名空间:

头文件前注意了ifndef的查重,这很棒!但是没一直棒下去,头文件的处理略显随意,首先是头文件一般是在函数定义的文件中定义,而我们的安某同学好像记反了这一点,除此之外头文件的顺序没有按照Google的规范,但是有种别样的美感,可能是他有着自己的美学理解。命名空间直接using namespace std了,这样不太好,会造成命名空间的滥用,如果要使用cin应该使用using std::cin的形式,在大型项目开发是需要注意的。

变量及函数声明:

在函数定义时想起了按序排,值得称赞!函数命名时使用了驼峰法,并且每个变量函数前都写了注释,简单易懂,这块做的基本上完美契合Google规范。

具体函数定义:

这两个函数都只有不到10行的代码,可以根据Google编码规范,改为内联函数空间换时间加快运算效率。此处的录入教师信息选择的是从数组中录入,若增减需要修改源文件,对没有编程基础的人不太友好,所以我是采用的txt文件/doge。

剩下部分由于代码过多只截取不太合理的代码部分来分析该处问题,以及总体存在问题

从这两处不难看出他有个好习惯:局部变量尽可能置于最小作用域内,并在变量声明时进行初始化。但更容易看出的是有n个坏习惯,首先说代码内容存在的问题,左边中为产生括号的代码,他默认括号个数为1,此处处理过于随意,应该随机生成括号数目,然后用种巧妙的方法(vector)处理,这里详情可以参考我的代码/doge,有兴趣的可以私聊我;右边中为切换模式代码,他的else处理是重新调用TestMeun函数,这样会导致要重新选择模式(重新输入num)的问题,会给使用者带来不便,应该注意。然后整体上管中窥豹一下,事实上也如此,他没有注意Google规定格式,首先控距上他统一使用了tab,而不是如Google代码规范里面说明的使用不同个数的空格,这个也印证了我之前猜测的那点(读了但没认真读)/doge。此外他的符号书写中没有空格,比如cout<<""时<<应该与两边有空格分离,很多地方包括其他符号的使用都没有注意。

总的来说,安某同学的处理基本上符合Google规范,并且添加了许多注释,只要加点油,代码还是能比较简单读懂的。

 

2.功能完整与扩展性

登录功能

生成试卷及切换功能

此处存在切换时输入错误处理不合适的问题,在具体函数分析中已经提到,这里不加赘述。

退出功能

 

总的来说要求功能都已实现,并且在登录后就可以直接切换类型(我觉得按题目要求生成试卷后才能切换不合理),和我一致,很不错!并且含有主函数和功能函数分离,他人可以外加函数,可扩展性也尚可。

 

三.总结

不得不说,虽然他的bug我基本上没有,他的出彩点我基本上都有/doge,但看安某同学的代码也是个学习的过程。在挑选他美中不足(找茬)的过程中,我又复习了Google参考规范,下次自己写时应该不对着看也能写得基本符合规范了。除此之外,这也是与他的共同探讨学习,进一步增进了感情,相信我们的团队项目到时候配合起来也会更加心有灵犀......

 

posted @ 2022-09-13 18:32  2kxx  阅读(183)  评论(1)    收藏  举报