求助:一堆的if else 嵌套
private Map versionCheck(Map mapParam) {
Map msg = new HashMap();
if(!"".equals(PMSUtil.isNull(mapParam.get("IS_INTERNET")))){
String checkVersion =SystemGlobals.getProperty("IS_CHECK");
if("1".equals(checkVersion)){
String versions =SystemGlobals.getProperty("VERSION");
String version =PMSUtil.isNull(mapParam.get("VERSION"));
String taxRegisterNo=PMSUtil.isNull(mapParam.get(""));
String whiteList =SystemGlobals.getProperty("NO_CHECK_TAX_REGISTER_NO");
if((","+whiteList+",").indexOf((","+taxRegisterNo+","))==-1){
if((","+versions+",").indexOf(","+version+",")==-1){//找不到
msg.put("RESULT", "0001");
msg.put("MSG", "FAILD");
}else{
msg.put("RESULT", ""0000"");
}
}else{
msg.put("RESULT", ""0000"");
}
}else{
msg.put("RESULT", ""0000"");
}
}else{
msg.put("RESULT", ""0000"");
}
return msg;
}
楼主就不要用你那山寨的
PMSUtil
了吧,直接上org.apache.commons.lang.StringUtils
1. 整体可简化为:
2.
str.indexOf(s) == -1
可简化为!str.contains(s)
3. 使用 2 之后,最里层的两个 if 语句:
可以写成:
if简化其实还是对事实逻辑上的分拆整合,语言上目前发挥余地不大。。。
个人观点,喷子无视
不知道你的程序的具体逻辑,设计模式 也许能帮到你
按照逻辑整合,具体到这个例子中,可以将先设置默认值:
然后再加上if语句,这样的话剩余后面一大堆的else语句就可以省略掉了。
分析变化的部分和稳定的部分代码,采用策略模式分离变化部分的代码
楼主可以查查表驱动法
有几个建议
1. 尽量不要使用 else 而是尽早 retrun
所有的逻辑应该尽量分拆成多而小的函数,这些没有副作用的函数可以被组装成复杂的逻辑而且不失可读性。但是这需要一定的经验。
具体到楼主这个例子,我觉得你应该尽早return,而不是用else