我正在编写一个验证函数,它检查多个条件,如果没有检查失败,则返回成功。我想知道,两种选择中首选的方式是什么?为什么?
private ResponseObj validationFunc1(ObjA objA, ObjB objB, ObjC objC){
ResponseObj responseObj = new ResponseObj();
if(condA){
responseObj.setStatus("FAILURE");
responseObj.setMessage("condA message");
return responseObj;
} else if(condB){
responseObj.setStatus("FAILURE");
responseObj.setMessage("condB message");
return responseObj;
} ....
...
}else if(condZ){
responseObj.setStatus("FAILURE");
responseObj.setMessage("condZ message");
return responseObj;
}
responseObj.setStatus("SUCCESS");
responseObj.setMessage("Valid");
return responseObj;
}
private ResponseObj validationFunc2(ObjA objA, ObjB objB, ObjC objC){
if(condA){
return new ResponseObj("FAILURE","condA message");
} else if(condB){
return new ResponseObj("FAILURE","condB message");
} ....
...
}else if(condZ){
return new ResponseObj("FAILURE","condZ message");
}
return new ResponseObj("SUCCESS","Valid");
}
在生产代码中,以上两个函数中哪一个是首选?如果是这样,一种方法是否比另一种方法有性能提升? 或者,我只是弄错了,这两个函数的编译代码是相同的吗?
预先感谢您的回答。如果我再次问同样的问题,我感到非常抱歉。我确实尽力寻找这个。
最佳答案
Which of the above 2 functions would be preferred in production code
都不是。
好的代码遵循一定的规则,特别是对于 Java,Robert Martin 的《Clean Code》一书中很好地阐述了这一点。清洁代码强烈反对的事情:
- 参数数量较多(并且 2 已经被认为很高;-)
- 在一个方法/类中做多个“事情”
因此,至少对于某些人来说,(编写良好的)生产代码看起来会有很大不同。
例如,您可以做什么:定义一个接口(interface) Validator
,然后将每个不同的验证放入实现该接口(interface)的自己的类中。然后“多次”检查变成实例化每个类,并将对象放入一些 List<Validator>
中。 ...然后迭代,并一个接一个地应用。
注意:性能在这里也不重要。唯一重要的是您的代码是否易于阅读、理解和维护。至少对我来说,由于上述原因,上述内容......并不是很擅长。
关于java - 在 If else 分支中,首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57715571/