结对编程互评
- 代码作者:软件2104 潘胜蓝
- 互评作者:软件2104 苏晨阳
一、摘要
- 该作业是由潘胜蓝同学使用Java语言完成的“中小学数学卷子自动生成程序”。
- 在代码设计方面,对小学教师、初中教师、高中教师三种角色属性进行了抽象提取,利用java抽象类和继承的优点进行编写;通过自行编写package、使用二叉树进行运算式的查重和用户的各项功能划分,使得代码结构清晰明朗;通过遵循Google Java的代码规范,潘胜蓝同学的代码也非常的美观;
- 在功能实现方面,实现了用户的登录和退出、账号角色的分配和切换以及各角色对应题目类型的生成及输出;通过对题目文件生成路径的设置,该程序可以在工程所在的相对路径下生成账号文件夹及以当前系统时间作为名称的题目文件;同时,该程序也实现了对非标准输入的过滤,拥有较高的鲁棒性,降低了程序崩溃的概率,大大提高用户体验。
二、技术栈
- 编程语言:Java;
- 编译平台:Intelij IDEA 2023;
- 操作系统:Windows 10/Windows 11;
三、代码结构
1、Main.java
该文件内包含main函数,为程序入口。
设置Node类、Account类接收相应参数;
User类继承UserAccount抽象类,设置了多个public成员变量及数据结构,同时对各项功能进行分方法编写,包括登录、账号密码校验、获得当前账号出题类型、输入各项出题参数、生成题目并查重以及最终将题目保存至指定文件夹内等;代码整洁有序,方法之间调用关系明确,可读性强;
程序入口main函数当中,通过调用预制接口实现各类功能;
2、package useraccount
该包内包含抽象类声明文件。
①UserAccount.java
声明public属性的基类,并声明成员变量和无参/有参构造函数,方便子类的继承。
四、运行测试
1、登录
2、生成题目
3、切换账号类型
4、退出登录
五、优缺点总结
1、优点
- 代码结构方面:通过各项功能的实现和整体代码的编写,足以看出潘胜蓝同学熟知Java代码编写规范,并且能够应用到具体的编写过程中去;变量和函数的命名均采用了驼峰命名法,使得代码的美观程度进一步提高,有利于后续的功能迭代和多人合作编写;
- 数据结构选择方面:使用树结构作为题目生成和去重的载体,巧妙利用了树结构在表示中缀、后缀表达式时清晰的结构和优异的性能,同时设计了相应的算法对题目去重的时间复杂度和空间复杂度都进行了优化,较为合理的平衡了去重程度和程序运行速度,是一种不错的思路,值得学习;
2、不足
- 类的编写略显臃肿:在User类中编写了过多的方法,使得程序的种种方法和User类的耦合度较高,不利于后续迭代;
- 注释部分:代码中必要的注释较少,在面向多人合作编程时会对他人理解代码产生一定的阻碍。