Java教程

结对编程个人项目评价

本文主要是介绍结对编程个人项目评价,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.简介

本博客为对陈熠玮同学的个人项目的评价,仅为个人评价,不作权威评判标准

2.优缺点分析

2.1优点

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缺点

2.2.1本项目的括号与根号、平方要求为随机生成且大于等于1个,此代码满足随机生成,但是数量限制为1,没有很完美实现功能,有改进空间

2.2.2部分代码存在复用,可考虑使用函数增加代码可读性

3.总结

队友的代码质量还是挺高的,从队友的代码中我学习到了很多,希望可以和队友一起共同进步,在接下来的结对项目中做出大家满意的项目

这篇关于结对编程个人项目评价的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!