我有一个关于当参数包含在对象中时验证方法参数的最佳实践的问题。例如,如果您有:
public class Student {
public int getStudentId();
public String getStudentName();
public String getStudentSSN();
public double getStudentGpa();
public String getStudentMajor();
// Other student related getters
}
那么,我有一个方法:
public void printStudentReport(Student student);
在这个方法中,我需要执行涉及ID、姓名、GPA和专业的逻辑。所以,这些就是所需要的。所有其他学生获取者都不必填充。可以先验证 Student 对象,然后验证我需要的这四个方法吗?我觉得这有点误导,因为我将此 Student 对象传递给此方法,但并非所有字段都是必需的,因此它实际上是发送到此方法的半填充对象。我觉得很奇怪。
最佳答案
如果某些属性必须始终填充才能使 Student 有效,则应考虑使用所需参数定义非默认构造函数,并从类中删除任何默认构造函数(如果需要) ,验证 getter 中的属性值)。这确保只能创建有效的 Student 对象。
如果其他属性对于学生来说确实是可选的,那么对我来说看起来完全没问题。当然,您需要仔细思考用例并仔分割析领域模型,以确定哪些参数是必需的,哪些参数是可选的。
关于java - 验证方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354904/