【发布时间】:2017-11-04 20:27:44
【问题描述】:
我有以下enum
public enum StudentType {
Domestic, International;
}
还有一个具有以下构造函数的 Student 类:
//Left out additonal parameters and validation
public Student(StudentType type, List<String> documents){
if(type == null){
throw new IllegalArgumentException("You must provide Student type");
}
this.type = type;
this.documents = this.validateList(documents);
}
还有一个验证列表的私有方法:
private List<String> validateList(List<String> validate){
if(this.type == StudentType.Domestic && validate.isEmpty()){
return validate;
}
else
if(this.type == StudentType.Domestic && !validate.isEmpty()){
return Collections.emptyList();
}
return new ArrayList<String>(validate);
}
我的计划是让 Student 类不可变。
说明:
只有国际学生需要文件(护照等)。国内学生不需要任何文件。
在我的constructor 中,我检查以确保类型不是null,客户必须提供国内或国际。
在我的私人 validateList method 中,我检查学生类型,以及 List 是否为空。如果是国内且为空,则返回列表,如果是domensitc且不为空,则返回空集合,否则返回文档的ArrayList<String>。
我的问题是检查私有方法中的类型是否是代码异味?我担心的是一个参数(文件列表)由学生类型确定/验证。如果检查私有方法中的类型是代码异味,我应该怎么做?
【问题讨论】:
标签: java oop parameters constructor