个人项目互评代码分析
软件2105-刘一凡
在看完金颖希同学的代码后,我有了一些看法与建议,在这篇博客中将对她的代码进行分析,并提出一些建议性的优化方案。个人拙见,希望能为项目的进一步改进提供一些思路。
整体结构:
代码结构相对清晰,分为数学题生成器和用户两部分,其中每个数学题生成器类负责不同难度级别的题目生成。最后在Main类中实现了控制台交互部分。
功能完成情况:
首先运行Main.java

在这里可以看到终端的文字提示引导功能足够完好,输入正确答案之后能获得用户的账号信息并且有多个可选操作。

如果输入错误(账号密码错误或格式错误),也有对应提示。

选择生成题目时,如果输入其他的符号或数量不符合要求,也会做检测。

输入合适的数字后,生成的题目也符合规范

切换难度格式错误时,会给出合适的反馈。

之后进行多个切换操作并生成相应数量的题目,最后退出,整个过程下来提示没有出现问题。


生成的初高中题也合理,满足要求。
至此测试完毕
代码分析:
优点:
1.结构清晰: 代码按照功能模块进行了划分,有三个问题生成器和一个用户类,每个类负责一个具体的功能,每一个类下也分为几个方法来处理不同的功能,易于理解和维护。

- 上图为三个生成器和他们的接口QuestionMaker,类的划分与使用合理。
2.JavaDoc和命名: 代码中,每一个类和方法都配置了对应的Javadoc,增强了可读性,使人一目了然。变量和方法的命名也符合Google的Java编码规范,易于理解。

- 其中一个Javadoc例子,格式符合规范。
3.异常处理: 在文件读写和输入验证等地方,遇到异常时会catch并做出相应的处理,增强了代码的健壮性。
-
if (trueInput == 0) { num = Integer.*parseInt*(tempNum); break; // 输入合法,跳出循环 } else { System.*out*.println("请输入10-30范围内的整数!"); System.*out*.println("准备生成" + user.getType() + "数学题目,请输入生成题目数量(10-30)"); } } catch (NumberFormatException e) { System.*out*.println("请输入10-30范围内的整数!"); System.*out*.println("准备生成" + user.getType() + "数学题目,请输入生成题目数量(10-30)"); } }
- 以上为金同学在getValidInput获得合法题目数量函数中,进行的异常处理。
4.封装性良好: 类中的属性和方法进行了良好的封装(User类),User类属性均为private,有安全性提高了代码的易维护性和可读性。
-
public class User { private String name; private String password; private String type; */** \* *** *创建一个用户对象。 \* ** \* *** **@param** *name* *用户名 \* *** **@param** *password* *用户密码 \* *** **@param** *type* *用户类型 \* **/ \* public User(String name, String password, String type) { this.name = name; this.password = password; this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
5.用户交互友好: 通过控制台与用户进行交互,给予了用户清晰的操作指引,提升了用户体验。在前面的测试中可以明显感受到,引导性强,并且对于不合法的输入也进行了相应的处理。
缺点:
1.缺少必要的注释,硬编码多:在金同学的代码中,方法内部鲜有注释,对于方法实现的流程理解会有所不便,尤其是一些硬编码区域,例如生成操作数函数填入的参数为一个5,如果在这里不加数字,有时候会不理解填入参数的意义。应该使用常量或者注释来解释其含义,希望可以增加必要的注释或减少使用硬编码。
2.软件包分配不合理:该项目所有的类都集中在一个软件包中,会导致包内文件过多,降低了代码的可读性和维护性。一个包中包含了所有的功能模块,这违反了单一职责原则,使得代码可能会难以理解和管理。同时也不利于模块化的设计,代码灵活性受到限制,如果可以的话,尽量给每一个类分配至对应软件包,如util包,Control包等等。