中小学数学卷子自动生成程序结对前分析
前段时间花了一些时间写了个人项目作业:中小学数学卷子自动生成程序。在结对编程之前,看了队友的代码,发现队友编写的代码有一些可借鉴之处,也存在着不足。
结构分析
首先要赞扬的是他的代码结构逻辑清晰,没有什么冗余部分。

用户名和密码直接保存在userData中。
【Main类】是程序的入口,负责调度所有的类和方法。
其包含:
main() 程序入口
【Question类】直接负责题目的生成。
其包含:
questionCreater() 按照参数生成指定数量的题目,并集合题目生成卷子,最终存储在当前目录下。
primary() 生成一道小学题目
junior() 生成一道初中题目
highschool() 生成一道高中题目
【User类】负责各类操作的逻辑,管理用户。
其包含:
User() 构造方法,负责初始化
checkUser() 参数传入用户名和密码,判定是否登录成功并更改登录状态
login() 登录模块,附带提示和方法调用
showTips() 提示模块,提示当前生成的题目数量
launch() 主逻辑模块,按输入给出相应回应和变化
从Main类可以直接看出程序的大致执行流程:

一个简单却高效的循环:【未登录时陷入执行登录】→【给出生成提示】→【操作模块】
但一方面来说,他的代码有些“过于集成”,Main类的执行逻辑比较僵硬,User类不仅管理用户还管理整个程序的执行逻辑,不易编辑扩展。
代码分析
因为是其他人写的程序,不好贴上代码附属,简单评价:
1、代码过程while、for、if、switch使用规范,过程出现的地方恰到好处,代码鲜明易懂。
2、用较少的代码实现了所有项目需求,简洁但是十分高效,在这种小项目中恰到好处。
3、代码中的注释十分合理,不赘余的同时又解释清了具体代码的用途。
4、程序里面没有使用到枚举类型,类型变化比较晦涩。
5、使用较多的boolean变量表示状态,这也是程序唯一冗余的一点。
6、Java的使用不熟,部分地方原本可以直接用Java的原生方法处理却没能使用。

浙公网安备 33010602011771号