调用方法时验证null参数的最佳方法是什么?
1)在进行方法调用之前
private void myMethod(String param1, String param2){
String a = param2;
if(StringUtils.isNotBlank(a)){
validate(a);
}
}
private void validate(String a) {
int temp = Integer.parseInt(a);
if(a > 4){
addError()
}
}
2)一旦收到参数
,在方法内部private void myMethod(String param1, String param2){
String a = param2;
validate(a);
}
private void validate(String a) {
if(StringUtils.isNotBlank(a)){
int temp = Integer.parseInt(a);
if(a > 4){
addError()
}
}
}
或两者
答案 0 :(得分:4)
IMO,StringUtils.isNotBlank(a)
仅是某种形式的验证,因此它应该采用validate()
方法。如果每次调用validate()
方法时都必须检查,那么将它移动到那里肯定会更有意义。
答案 1 :(得分:2)
从你给出的两种方法来看,第二种方法更好。
原因:DRY principle(不要重复自己,也就是避免代码重复)。
调用每个地方 一致性,“非空白”不变量(域/业务规则)的责任属于 实际上:考虑更改此域规则的可能性,如果需要添加一些新的检查,在什么情况下您必须更少(因此不易出错)?那些做出改变的开发者会期望找到这样的规则吗?在validate()
的代码中的第一个剪切副本(或三次重复等)中的代码“validate()
方法(固有),因此它应该负责处理它。 validate()
中还是分散在整个代码库中?
答案 2 :(得分:0)
如果每次调用某个方法时该错误验证都很有用,那么显然应该在方法内部完成,否则你必须在调用该方法之前每次都这样做。请记住对代码进行评论,以便稍后再记住。
答案 3 :(得分:0)
将抛出java.lang.IllegalArgumentException
的方法。
像:
private void validate(String a) {
if(StringUtils.isNotBlank(a)){
int temp = Integer.parseInt(a);
if(a > 4){
addError()
}
}
else{
throw new IllegalArgumentException("argument must not be null or blank");
}
}
答案 4 :(得分:0)
从概念上讲,validate()方法应该能够识别传递参数是否为null。因此,在您的给定方案中,方法2
应该更可取。
答案 5 :(得分:0)
验证参数的最佳方法是什么
IMO,你的第二种方法更好 因为它不是一个任务,你必须提供一个单独的方法,它只是一个参数验证,它是你要在你的实现中实现的相同逻辑的一部分方法。另一件需要考虑的事情是第二种方法会形成更高的代码可重复性。
或两者
从不,根据您的编码习惯选择一个并坚持下去。
验证的其他注意事项:
Private
个参数。