求助:一堆的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