目录
- 简介
- 项目介绍
- 代码分析
- 优缺点分析
简介
本文将分析博主结对编程队友个人项目的代码,从项目完成程度、实用性、规范性分析代码的优缺点。
项目介绍
根据湖南大学软件工导论课程中个人项目要求,用java语言完成一个简单的小、初、高数学试卷自动生成工具。具体要求详见个人项目需求文件。
代码分析
此项目中总共定义了三个实体类,Paper、Question、User。
Paper
此类封装了一个问题集合,同时包含了创建文件夹、得到当前时间字符串、添加问题、添加问题、展示问题等方法。
Question
此类是问题类,其中包含了很多与问题生成相关的代码。
User
此类是用户类,包含了添加用户文件夹和登录等方法。
项目测试
登录
更改出题等级
选择出题数量
题目展示
优缺点分析
优点
- 交互界面清晰明了,易于交互,每次生成试卷前都有提示说明即将生成什么类型的试卷。
- 定义的三个实体类包含与之相关的方法,结构较为清晰。
- 各个功能都有自己的方法,并未杂糅在一起,代码易于阅读。
- 每次生成试卷后都会在操作台展示生成的问题,易于操作者预读试卷。
- 整体基本符合Google的java编程规范。
不足之处
- 登录时即使不按格式输入也可能登录成功
- 出现此类问题的原因分析:
登录时的代码:
Scanner sc = new Scanner(System.in);
user = User.login(sc.next(), sc.next());
if (user == null) {
System.out.println("---请输入正确的用户名、密码----\n输入0或其他:重输入用户名、密码\n输入-1:退出");
} else {
break;
}
登录时只是将输入的前两个值作为登录的函数传入,如果在账号密码之后跟进其他输入也不会有错误提示。
- 登录后如果输入-1应该是退出登录,重新登录而不是结束整个程序
- 登录后选择下一步进行的功能时,如果输入的不是数字,则整个程序会报错而被迫终止
此种错误在用户输入题目数量时也会出现,原因是代码编写时,接受数字的函数使用的是:
Scanner sc3 = new Scanner(System.in);
int n = Integer.parseInt(sc3.next());
当输入接收的并不是一个数字字符串时程序就会报错,而并未处理此种异常。个人建议此处可以采用try{}catch(){}来捕获异常,如果输入的并非数字则提示输入有误并重新输入。可以采用下列形式:
input = scanner.nextLine();
try {
num = Integer.parseInt(input);
} catch (Exception e) {
System.out.println("输入有误,请重新输入");
continue;
}
- 有几处地方未按照Google编程规范编程。
- 如一行的字符数超过列限制后并未自动换行。
- 块缩进应该是2个空格,而代码中的块缩进是4个空格。
总结
总体而言,此项目完成了所有功能,并进行了一定的优化。但是有些细节有待优化。
通过此项目,我们最重要的是要意识到规范编程的重要性。规范编程可以提高代码质量、增加可维护性和可读性、利于团队协作并且提高我们编程的效率。此次个人项目编程是我们规范编程的试手,希望在未来的编程中,我们能一直坚持规范编程。