个人项目互评

发布时间 2023-09-19 22:14:59作者: 幼刀丛雨

一.整体分析:

苏同学的代码包括了大量的类,大致分析如下:

1. User类:这是一个抽象类,包含了用户的基本信息(name、password、authority)和一个设置用户权限的方法。其他用户类(如Teacher)可以继承这个类来共享属性和方法。

2. Teacher类:这个类继承了User类,表示教师用户。它包含了各种方法,用于生成数学题目、处理用户登录和权限切换,以及创建文件夹等操作。该类依赖于Method和Autica类来完成题目生成和身份验证等功能。

3. Autica类:这个类处理用户身份验证和题目去重。它可以验证用户身份和在数据库中操作题目,还包含一个sql类的实例。sql属性充当了与数据库交互的接口。

4. Method类:这个类包含了生成数学题目的方法和一些加载界面的具体方法。除此之外还包括计算答案和创建文件等方法。

5. Sql类:这个类负责与数据库交互,包括验证用户身份、检查题目是否重复以及插入新题目等操作。它使用JDBC连接到数据库并执行相应的操作。

 

二.优点:

1.将代码分别写到多个类的编程方式是我值得学习的地方,这样子会有很多优点,可以更好地组织和管理代码。使代码更易于理解和维护,和类的重用。

2.苏同学采用了数据库交互,在处理用户数据和题目数据时显得非常便捷。数据库允许数据长期存储,同时提供了安全的存储机制,这有助于保护数据。数据库提供了强大的查询和检索功能,虽然在本次个人项目中对此需求不高,但是考虑到未来的功能拓展,在一开始就采用数据库存储是很明智的。

3.代码基本符合谷歌规范,包括方法命名以 lowerCamelCase 风格编写。这样子提高了代码的可读性便于我理解代码。lowerCamelCase 命名风格使得在编写代码时更容易触发自动完成提示,提高了编码效率,比如以下是Autica类的内容:

 

public class Autica {

  Sql sql = new data.Sql();

  public String Authentication(String account, String password) {
    String ss = sql.Check(account, password);
    return ss;
  }
  //验证账号密码

  public String changeAu(String account, String authority) {
    String ss = sql.changeAu(account, authority);
    return ss;
  }
  //验证账号密码

  public String checkSql(String prob, Double ans) {
    String ss = sql.checkProb(prob, ans);
    return ss;
  }
  //题目去重

  public void insProb(String prob, Double ans) {
    sql.insProb(prob, ans);
  }
}

三.缺点

1.部分错误处理不完善,有的读取输入函数没有考虑到用户的异常错误输入。比如createTopic(),用户可能并不会输入一个int型。

  public int createTopic() {
    m.top(name, authority);
    m.createTopic(authority);
    Scanner it = new Scanner(System.in);
    int num = it.nextInt();
    return num;
  }

2.在生成题目的时候,对于三个难度分别写了三个函数,这会导致部分代码的重复出现,导致如果将来需要添加新的难度级别或进行修改,必须分别修改每个独立的函数。还有可能产生代码冗余。这会浪费内存,增加代码复杂性。

3.部分代码结构过于复杂,然而注释却比较匮乏,导致阅读起来较为困难。