本博客为对陈熠玮同学的个人项目的评价,仅为个人评价,不作权威评判标准
2.1.1本项目要求为每个用户创建专属文件夹,此代码采用的创建方式是即时创建而非提前创建,这一点让程序更加灵活,不会因为文件夹的挪动就导致程序无法使用
public static String creatFile(User user) { Date date = new Date(); SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); String filename = sim.format(date) + ".txt"; String pathname = System.getProperty("user.dir") + "\\src\\com\\chen\\resources\\" + user.getUsername() + "\\" + user.getType(); String filepath = pathname + "\\" + filename; File dir = new File(pathname); File file = new File(filepath); File file1 = new File(System.getProperty("user.dir") + "\\src\\com\\chen\\resources\\" + user.getUsername() + "\\" + "hashcode.txt"); // 创建目录 if (!dir.exists()) { try { if (dir.mkdirs()) System.out.println("目录创建成功"); } catch (Exception e) { // handle exception } } // 创建文件 if (file.exists()) { System.out.println("文件已存在"); } else { try { boolean b = file.createNewFile(); if (b) { System.out.println("试卷生成成功"); } } catch (Exception e) { // handle exception } }
2.1.2本项目要求对生成的题目进行查重,陈同学采用的是hash表查重,这种查重方法减少了每次查重需要遍历的数据量,提高了查重的效率
public class HashCheckUtils { public static ArrayList<String> hashCodes; // 对应用户生成的试卷中题目的hash值,用于查重 /** * 用于生成题目时的查重 * * @param filepath 存储所有题目hash的文件的所在路径 * @param question 生成的题目 * @return 返回生成的题目是否已经重复,重复则返回true,没有则返回false */ public static boolean checkDuplicate(String filepath, String question) { hashCodes = new ArrayList<>(); BufferedReader br; FileReader fileReader; String line; try { fileReader = new FileReader(filepath); br = new BufferedReader(fileReader); while ((line = br.readLine()) != null) { hashCodes.add(line); } } catch (Exception e) { //handle exception } int key = question.hashCode(); String questionHash = String.valueOf(key); return hashCodes.contains(questionHash); } }
2.1.3陈同学的用户生成采用的是创建对应类,并为每个用户作为一个对象,这种方法相对将每个用户的信息直接存储而言,多了很多灵活性,可以方便后期的修改代码和增添功能,并且可以与文件路径生成的代码块结合,快捷生成对应用户的文件夹路径,避免后期的代码修改,方便用户的增添与代码后期维护
public User() { } public User(String type, String username, String password) { this.type = type; this.username = username; this.password = password; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "type='" + type + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; }
2.2.1本项目的括号与根号、平方要求为随机生成且大于等于1个,此代码满足随机生成,但是数量限制为1,没有很完美实现功能,有改进空间
2.2.2部分代码存在复用,可考虑使用函数增加代码可读性
队友的代码质量还是挺高的,从队友的代码中我学习到了很多,希望可以和队友一起共同进步,在接下来的结对项目中做出大家满意的项目