過多的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);