个人项目:中小学数学卷子自动生成程序--队友代码分析
本次为对个人项目中的结对编程队友代码的分析,主要对黑盒测试与代码规范和功能等进行分析。
队友利用C++编程,主要利用一个用户类,并对该类定义其私有成员变量,通过定义并调用其成员函数实现所需功能。
压缩包主要包含一个.cpp和可执行文件,还有9个存储试卷的文件夹:

优点:
1. 黑盒测试中,用户体验非常好。
对每个功能都有提示信息,如提示输入用户名,密码,登录成功,已经生成试卷,是否退出程序或切换类型等。
这些提示信息能使刚接触该程序的使用者用起来非常顺畅,用户需求基本满足。

2. 代码规范上,程序代码比较符合规范。
(1) 变量命名
类的成员变量为m_xx,局部变量无前缀等。
(2) 函数命名
函数命名使用首字母大写,且使用“动词+名词”形式,具有自我描述性。
(3) 常见语句书写规则
对如if,while,switch等语句的书写符合规范,且同一代码块的不同逻辑块之间有空行,函数与函数之间有空行。
(4) 注释风格
注释有重点,直观简洁。
3. 功能需求方面:基本实现要求中的功能。
(1) 能够使用户输入正确的用户名和密码后登录;
(2) 能生成题目,且保存在用户的文件夹下,并且有检查重复的情况;
(3) 在登录条件下可以切换类型或正常退出登录。
4. 性能方面:
检查题目是否重复时,将所有以前生成的题目保存到一个文件中,从而只用查询该文件是否存在相同,而不用多次打开文件夹下的所有题目文件,减少输入输出流的文件开关次数,性能有提高。
缺点:
1. 代码优化有待提高。
(1) 单一的函数的代码量太多,模块化程度不高。
如可以把函数GenerateExam中的一些switch语句等切分出来,成为小函数,在原函数中调用该函数,则代码的模块性也会比较好。
(2) 代码中重复出现相同的语句。
重复代码可以利用条件语句抽取出来,消除一些冗杂。

2. 风险测试和分析有待加强。
当用户没有按照要求输入时,会出现运行混乱甚至出错。可以尽可能多地对输入情况考虑得全面,从而避免程序运行时出现错误的情况。
例如,在输入用户名,密码时如果用户输入多一个字符串,则运行到后面,即使输入正确,也会登录不进去:

在输入题目数量时,如果输入的不是数字,则程序陷入死循环,输出提示信息。
出现该问题的原因:输入时只考虑为数字的情况。
解决办法:可以通过将输入变量的类型转换为字符串,从而对该字符串进行处理,得到所需要的数字。

3. 代码的可移植性需要增强
由于压缩包中已经有了用户的对应文件夹,所以该程序可以实现将题目试卷生成到对应文件夹下。
如果运行.cpp文件前没有对应文件夹存在,则用户找不到对应的试卷.txt文件。
所以建议可以在程序中增加建立文件夹的内容,提高程序的可移植性。
总结:
队友对用户体验要求实现较好,且代码总体符合规范,程序功能基本满足。
建议在代码的模块化,异常输入及可移植性的解决方面加强处理。
通过对队友代码的理解与运行,让我既能看到别人代码中的优点,使自己以后在这些自己美主要到的方面加强学习,又能在不足中反思自己的代码并改进。总之,让自己对平时的代码中的小细节和规范等都有更全面的理解。

浙公网安备 33010602011771号