java - 在 If else 分支中,首选方法是什么?

标签 java if-statement

我正在编写一个验证函数,它检查多个条件,如果没有检查失败,则返回成功。我想知道,两种选择中首选的方式是什么?为什么?

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/

相关文章:

java - class.getResource (".") 在 Tomcat 服务器中返回 null 但在独立的 Java 程序上工作正常

java - 从另一个 jframe 添加节点到 jtree

java - concat 命令中的这些字符串是在字符串池中创建的吗?

java - 在哪里放置相对于 java 项目的声音文件?

sql - 对一个表中的值使用 if else 将数据插入另一个表

c - 程序未收到所需的输入

c++ - 坚持使用 if 语句的代码

c++ - 我的 "if"语句中只有一个给出了准确的值,即使它们都是相同的结构

java - 如何增加 Integer 对象的缓存大小

java - 比较java中的int