讓if else變得優雅些

 

過多的if else真的腦殼疼。

讓if else變得優雅些。。。。

一、使用return

比如在不符合條件、沒必要往下運行時,不要再else寫邏輯。

方法....
if(key==null || key==""){
     return false;
}
return true;

二、使用三元運算符

我們會遇見這樣的情況,比如查詢成績 60分以上展示爲及格,60分以下爲不及格

Integer score = 80;
if(score>60){
        return "100";
}else{
        return  "60";
}
no no no no no no no no no no no no no no no no no no no no 
這樣做:
score = score > 60 ? 100 : 60;

三、合併條件表達式

將邏輯判斷進行梳理和歸納,使用更簡單的方式進行判斷。

 String key = "news";
        if(key.contains("n")){
            return key;
        }
        if(key.endsWith("s")){
            return key;
        }
        if (key.startsWith("n")){
            return key;
        }

優化一下:

 String key = "news";
        if(key.contains("n") || key.endsWith("s") ||key.startsWith("n")){
            return key;
        }

四,梳理優化判斷邏輯

和上面這一點比較相似,通過分析邏輯將判斷邏輯改的簡單易懂一些,如下面這個嵌套判斷

// 年齡大於 18
if (age > 18) {
    // 工資大於 5000
    if (salary > 5000) {
        // 是否漂亮
        if (pretty == true) {
            return true;
        }
    }
}
return false;

優化後:將包含的邏輯關係,改成平行關係,代碼可讀性更高,邏輯更清晰。

if (age < 18) { //年齡小於18歲
     return false;
}
if(salary<5000){ //工資少於5000
    return false;
}
//是否漂亮
return pretty==true;

五、能使用switch的時候,選擇switch

 String typeCode =  list.get(i).getTypeCode();
if("0".equals(typeCode)){
     lingYu.add(list.get(i));
}else if("1".equals(typeCode)){
     gangWei.add(list.get(i));
}else if("2".equals(typeCode)){
    jiBie.add(list.get(i));
}else{
    nanDu.add(list.get(i));
}
       
優化一下:   
 String typeCode =  list.get(i).getTypeCode();
            switch (typeCode) {
                case "0"://領域
                    lingYu.add(list.get(i));
                    break;
                case "1"://崗位
                    gangWei.add(list.get(i));
                    break;
                case "2"://級別
                    jiBie.add(list.get(i));
                    break;
                default://難度 ---3
                    nanDu.add(list.get(i));
                    break;
            }

六、使用Map

使用map將需要判斷的數據定義成元素信息可以直接避免if else

if (t == 1) {
    type = "name";
} else if (t == 2) {
    type = "id";
} else if (t == 3) {
    type = "mobile";
}

優化後:

Map<Integer, String> typeMap = new HashMap<>();
typeMap.put(1, "name");
typeMap.put(2, "id");
typeMap.put(3, "mobile");

之前的判斷就成了一行代碼。。。。。。。。。yeah!
type = typeMap.get(ty);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章