优点:
文件结构:如下图所见:
类的分类准确,并且按照类功能划分到不同的包里,结构严谨。
myloginbegin包:存储启动类Begin、登录窗口类LoginDemo、登录功能类LoginFunction、
以及用户类User。
mytest包:使用@Test注解,一一测试了功能。
testpaper包:包含试卷类。
一目了然,结构清晰。
项目结构方面:
考虑到了后续项目的迭代开发,将试卷抽象出来为一个父类Paper,然后有三个子类HighPaper、JuniorPaper、JuniorPaper、PrimaryPaper继承父类,功能扩展容易实现。
代码功能实现方面:
1、代码功能实现完全。
2、在程序启动后,用户登录前,将账号存入了对应的哈希表中,并以此进行账号验证,一来在用户登录时账号验证更快,提高效率;二来账号文件安全性有了保证。
3、使用随机数生成操作数、操作符、操作数位置、操作符位置等,并对不同的符号特性做了进一步处理,加以特殊性判断,算法较为严谨,随机性强度高。
4、最后使用SimpleDateFormat类标准化时间格式。将对应试卷命名。
项目代码规范方面:
1、类名使用大驼峰命名、方法名、参数等使用小驼峰命名,并且命名清晰,可以第一时间看出对应方法和类的作用,但是注意到有一些参数不规范,希望下次更加细心。
2、包名都为小写。
3、导包规范,按照要求分为了三类,并且按照字典序排列。
4、注释格式规范且较为详细。
需要改进的地方:
1、代码规范还需加强。比如:else if 应该紧跟在大括号后,但是却习惯性换行再写。还有if,while等后面的大括号前应该空一格,二元运算符两侧应该空格等等。加强java谷歌规范提高可读性和美观性。
2、在进行查重时,可以考虑依旧用哈希表,提高效率。
3、试卷生成代码可能是一味追求了随机性,而忽略了代码量,显得方法有些臃肿,可读性不高。希望可以精简一下算法,优化一下代码。
4、在高中题目生成时有bug,没有考虑到特殊操作符的值域问题,导致生成题目不符合数学规范,例如 tan90不存在, 0作为被除数等,希望之后改进。