java中mutator方法的最佳实践

java中mutator方法的最佳实践,java,refactoring,Java,Refactoring,我编写了一个函数,用于对自定义对象集合的ArrayList.sort进行排序 public List<Student> getStudents(int std) { List<Student> students = studentDAO.getStudents(std); ...... sortStudents(students); ..... return students; } private void sortStudent

我编写了一个函数,用于对自定义对象集合的ArrayList.sort进行排序

public List<Student> getStudents(int std) {
    List<Student> students = studentDAO.getStudents(std);
    ......
    sortStudents(students);
    .....
    return students;
}

private void sortStudents(students) {
    Collection.sort(students, new Comparator<Student>(){
        public int compare(Student s1, Student s2) {
            return s1.getDOB().compareTo(s2.getDOB());
        }
    });
}
getStudents公共列表(int std){
列出学生=studentDAO.getStudents(std);
......
SORTS学生(学生);
.....
留学生;
}
私人学生(学生){
Collection.sort(学生,新比较器(){
公共整数比较(学生s1、学生s2){
返回s1.getDOB().compareTo(s2.getDOB());
}
});
}
以上代码是否干净?
编写这样的变量可以吗?还是应该使用一个新对象并返回它?

这取决于
studentDAO.getStudents()
方法的约定-它是否保证总是返回一个新的结果列表(即只有调用者才会引用的对象)?如果是这样,那么您可以安全地将其排序到位。如果没有,你应该复印一份


另一个问题是——它是否总能保证这一点?其中一个可能出现错误的方法是,如果您添加一些缓存-这很容易打破这一保证。

这取决于
studentDAO.getStudents()
方法的约定-它是否保证总是返回一个新的结果列表(即只有调用方才会引用的对象)?如果是这样,那么您可以安全地将其排序到位。如果没有,你应该复印一份


另一个问题是——它是否总能保证这一点?其中一个可能出现问题的方法是,如果您添加一些缓存,这可能很容易打破这一保证。

这是一个值得关注的问题。但是您可以将
比较器作为常量和内联排序方法存储到
getStudents(int)
中。谢谢您的支持。我对代码审查一无所知。谢谢你这是我的荣幸。但是您可以将
比较器作为常量和内联排序方法存储到
getStudents(int)
中。谢谢您的支持。我对代码审查一无所知。非常感谢。