个人项目:中小学数学卷子自动生成程序--队友代码分析

 

本次为对个人项目中的结对编程队友代码的分析,主要对黑盒测试与代码规范和功能等进行分析。

 

队友利用C++编程,主要利用一个用户类,并对该类定义其私有成员变量,通过定义并调用其成员函数实现所需功能。

压缩包主要包含一个.cpp和可执行文件,还有9个存储试卷的文件夹:

 

 

优点:

1. 黑盒测试中,用户体验非常好。

对每个功能都有提示信息,如提示输入用户名,密码,登录成功,已经生成试卷,是否退出程序或切换类型等。

这些提示信息能使刚接触该程序的使用者用起来非常顺畅,用户需求基本满足。

 

 

 2. 代码规范上,程序代码比较符合规范。

(1) 变量命名

类的成员变量为m_xx,局部变量无前缀等。

(2) 函数命名

函数命名使用首字母大写,且使用“动词+名词”形式,具有自我描述性。

(3) 常见语句书写规则

对如ifwhile,switch等语句的书写符合规范,且同一代码块的不同逻辑块之间有空行,函数与函数之间有空行。

(4) 注释风格

注释有重点,直观简洁。

 

3. 功能需求方面:基本实现要求中的功能。

(1) 能够使用户输入正确的用户名和密码后登录;

(2) 能生成题目,且保存在用户的文件夹下,并且有检查重复的情况;

(3) 在登录条件下可以切换类型或正常退出登录。

 

4. 性能方面:

检查题目是否重复时,将所有以前生成的题目保存到一个文件中,从而只用查询该文件是否存在相同,而不用多次打开文件夹下的所有题目文件,减少输入输出流的文件开关次数,性能有提高。

 

 

缺点:

1. 代码优化有待提高。

(1) 单一的函数的代码量太多,模块化程度不高。

如可以把函数GenerateExam中的一些switch语句等切分出来,成为小函数,在原函数中调用该函数,则代码的模块性也会比较好。

(2) 代码中重复出现相同的语句。

重复代码可以利用条件语句抽取出来,消除一些冗杂。

 

2. 风险测试和分析有待加强。

当用户没有按照要求输入时,会出现运行混乱甚至出错。可以尽可能多地对输入情况考虑得全面,从而避免程序运行时出现错误的情况。

例如,在输入用户名,密码时如果用户输入多一个字符串,则运行到后面,即使输入正确,也会登录不进去:

 

 

在输入题目数量时,如果输入的不是数字,则程序陷入死循环,输出提示信息。

出现该问题的原因:输入时只考虑为数字的情况。

解决办法:可以通过将输入变量的类型转换为字符串,从而对该字符串进行处理,得到所需要的数字。

 

 

3. 代码的可移植性需要增强

 由于压缩包中已经有了用户的对应文件夹,所以该程序可以实现将题目试卷生成到对应文件夹下。

如果运行.cpp文件前没有对应文件夹存在,则用户找不到对应的试卷.txt文件。

所以建议可以在程序中增加建立文件夹的内容,提高程序的可移植性。

 

总结:

队友对用户体验要求实现较好,且代码总体符合规范,程序功能基本满足。

建议在代码的模块化,异常输入及可移植性的解决方面加强处理。

 

通过对队友代码的理解与运行,让我既能看到别人代码中的优点,使自己以后在这些自己美主要到的方面加强学习,又能在不足中反思自己的代码并改进。总之,让自己对平时的代码中的小细节和规范等都有更全面的理解。

 

posted @ 2020-09-30 20:25  曹芊  阅读(145)  评论(0)    收藏  举报