精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

腦殼疼!代碼中那么多“煩人”的if else

開發 前端 開發工具
if else 是我們寫代碼時,使用頻率最高的關鍵詞之一,然而有時過多的 if else 會讓我們感到腦殼疼。

if else 是我們寫代碼時,使用頻率最高的關鍵詞之一,然而有時過多的 if else 會讓我們感到腦殼疼。

[[323515]]

圖片來自 Pexels

例如下面這個偽代碼:

是不是很崩潰?雖然他是偽代碼,并且看起來也很夸張,但在現實中,當我們無數次 Review 別人代碼時,都會發現類似的場景。

那么我們本文就來詳細聊聊,有沒有什么方法可以讓我們避免來寫這么多的 if else 呢?

我們本文提供了 9 種方法來解決掉那些“煩人”的 if else,一起來看吧。

1.使用 return

我們使用 return 去掉多余的 else,實現代碼如下。

優化前代碼:

  1. if ("java".equals(str)) { 
  2.     // 業務代碼...... 
  3. else { 
  4.     return

優化后代碼:

  1. if (!"java".equals(str)) { 
  2.     return
  3. // 業務代碼...... 

這樣看起來就會舒服很多,雖然相差只有一行代碼,但真正的高手和普通人之間的差距就是從這一行行代碼中體現出來的。

“勿以善小而不為,勿以惡小而為之”,“千里之堤,潰于蟻穴”,說的都是同樣的道理。

2.使用 Map

使用 Map 數組,把相關的判斷信息,定義為元素信息可以直接避免 if else 判斷,實現代碼如下。

優化前代碼:

  1. if (t == 1) { 
  2.     type = "name"
  3. else if (t == 2) { 
  4.     type = "id"
  5. else if (t == 3) { 
  6.     type = "mobile"

我們先定義一個 Map 數組,把相關判斷信息存儲起來:

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

之前的判斷語句可以使用以下一行代碼代替了:

  1. type = typeMap.get(t); 

3.使用三元運算符

三元運算符也叫三元表達式或者三目運算符/表達式,不過代表的都是一個意思,優化代碼如下。

優化前代碼:

  1. Integer score = 81; 
  2. if (score > 80) { 
  3.     score = 100; 
  4. else { 
  5.     score = 60; 

優化后代碼:

  1. score = score > 80 ? 100 : 60; 

4.合并條件表達式

在項目中有些邏輯判斷是可以通過梳理和歸納,變更為更簡單易懂的邏輯判斷代碼,如下所示。

優化前代碼:

  1. String city = "西安"
  2. String area = "029"
  3. String province = "陜西"
  4. if ("西安".equals(city)) { 
  5.     return "xi'an"
  6. if ("029".equals(area)) { 
  7.     return "xi'an"
  8. if ("陜西".equals(province)){ 
  9.     return "xi'an"

優化后代碼:

  1. if ("西安".equals(city) || "029".equals(area) || "陜西".equals(province)){ 
  2.     return "xi'an"

5.使用枚舉

JDK 1.5 中引入了新的類型——枚舉(enum),我們使用它可以完成很多功能,例如下面這個。

優化前代碼:

  1. Integer typeId = 0; 
  2. String type = "Name"
  3. if ("Name".equals(type)) { 
  4.     typeId = 1; 
  5. else if ("Age".equals(type)) { 
  6.     typeId = 2; 
  7. else if ("Address".equals(type)) { 
  8.     typeId = 3; 

優化時,我們先來定義一個枚舉:

  1. public enum TypeEnum { 
  2.     Name(1), Age(2), Address(3); 
  3.     public Integer typeId; 
  4.     TypeEnum(Integer typeId) { 
  5.         this.typeId = typeId; 
  6.     } 

之前的 if else 判斷就可以被如下一行代碼所替代了:

  1. typeId = TypeEnum.valueOf("Name").typeId; 

6.使用 Optional

從 JDK 1.8 開始引入 Optional 類,在 JDK 9 時對 Optional 類進行了改進,增加了 ifPresentOrElse() 方法,我們可以借助它,來消除 if else 的判斷,使用如下。

優化前代碼:

  1. String str = "java"
  2. if (str == null) { 
  3.     System.out.println("Null"); 
  4. else { 
  5.     System.out.println(str); 

優化后代碼:

  1. Optional<String> opt = Optional.of("java"); 
  2. opt.ifPresentOrElse(v ->  
  3.     System.out.println(v), () -> System.out.println("Null")); 

小貼士:注意運行版本,必須是 JDK 9+ 才行。

7.梳理優化判斷邏輯

和第 4 點比較類似,我們可以通過分析 if else 的邏輯判斷語義,寫出更加易懂的代碼,例如以下這個嵌套判斷的優化。

優化前代碼:

  1. // 年齡大于 18 
  2. if (age > 18) { 
  3.     // 工資大于 5000 
  4.     if (salary > 5000) { 
  5.         // 是否漂亮 
  6.         if (pretty == true) { 
  7.             return true
  8.         } 
  9.     } 
  10. return false

優化后代碼:

  1. if (age < 18) { 
  2.     return false
  3. if (salary < 5000) { 
  4.     return false
  5. return pretty;  

我們需要盡量把表達式中的包含關系改為平行關系,這樣代碼可讀性更高,邏輯更清晰。

8.使用多態

繼承、封裝和多態是 OOP(面向對象編程)的重要思想,本文我們使用多態的思想,提供一種去除 if else 方法。

優化前代碼:

  1. Integer typeId = 0; 
  2. String type = "Name"
  3. if ("Name".equals(type)) { 
  4.     typeId = 1; 
  5. else if ("Age".equals(type)) { 
  6.     typeId = 2; 
  7. else if ("Address".equals(type)) { 
  8.     typeId = 3; 

使用多態,我們先定義一個接口,在接口中聲明一個公共返回 typeId 的方法,在添加三個子類分別實現這三個子類。

實現代碼如下:

  1. public interface IType { 
  2.     public Integer getType(); 
  3.  
  4. public class Name implements IType { 
  5.     @Override 
  6.     public Integer getType() { 
  7.         return 1; 
  8.     } 
  9.  
  10. public class Age implements IType { 
  11.     @Override 
  12.     public Integer getType() { 
  13.         return 2; 
  14.     } 
  15.  
  16. public class Address implements IType { 
  17.     @Override 
  18.     public Integer getType() { 
  19.         return 3; 
  20.     } 

注意:為了簡便我們這里把類和接口放到了一個代碼塊中,在實際開發中應該分別創建一個接口和三個類分別存儲。

此時,我們之前的 if else 判斷就可以改為如下代碼:

  1. IType itype = (IType) Class.forName("com.example." + type).newInstance(); 
  2. Integer typeId = itype.getType(); 

有人可能會說,這樣反而讓代碼更加復雜了,此可謂“殺雞焉用宰牛刀”的典型范例了。

這里作者只是提供一種實現思路和提供了一些簡易版的代碼,以供開發者在實際開發中,多一種思路和選擇,具體用不用需要根據實際情況來定了。靈活變通,舉一反三,才是開發的上乘心法。

9.選擇性的使用 switch

很多人都搞不懂 switch 和 if else 的使用場景,但在兩者都能使用的情況下,可以盡量使用 switch,因為 switch 在常量分支選擇時,switch 性能會比 if else 高。

if else 判斷代碼:

  1. if ("add".equals(cmd)) { 
  2.     result = n1 + n2; 
  3. else if ("subtract".equals(cmd)) { 
  4.     result = n1 - n2; 
  5. else if ("multiply".equals(cmd)) { 
  6.     result = n1 * n2; 
  7. else if ("divide".equals(cmd)) { 
  8.     result = n1 / n2; 
  9. else if ("modulo".equals(cmd)) { 
  10.     result = n1 % n2; 

switch 代碼:

  1. switch (cmd) { 
  2.     case "add"
  3.         result = n1 + n2; 
  4.         break; 
  5.     case "subtract"
  6.         result = n1 - n2; 
  7.         break; 
  8.     case "multiply"
  9.         result = n1 * n2; 
  10.         break; 
  11.     case "divide"
  12.         result = n1 / n2; 
  13.         break; 
  14.     case "modulo"
  15.         result = n1 % n2; 
  16.         break; 

在 Java 14 可使用 switch 代碼塊,實現代碼如下:

  1. // java 14 
  2. switch (cmd) { 
  3.     case "add" -> { 
  4.         result = n1 + n2; 
  5.     } 
  6.     case "subtract" -> { 
  7.         result = n1 - n2; 
  8.     } 
  9.     case "multiply" -> { 
  10.         result = n1 * n2; 
  11.     } 
  12.     case "divide" -> { 
  13.         result = n1 / n2; 
  14.     } 
  15.     case "modulo" -> { 
  16.         result = n1 % n2; 
  17.     } 

10.總結

業精于勤荒于嬉,行成于思毀于隨。編程是一門手藝,更是一種樂趣,哈佛最受歡迎的幸福課《幸福的方法》一書中寫到“讓我們能感到快樂和幸福的方法,無非是全身心的投入到自己稍微努力一下就能完成的工作中去”!

是啊,太簡單的事情通常無法調動起我們的興趣,而太難的工作又會讓我們喪失信心,只有那些看似很難但稍微努力一點就能完成的事情,才會給我們帶來巨大的快樂。

我想編程也是一樣,普通的方法每個人都會寫,然而優雅一點的代碼不是所有人都能寫得出來,而本文恰恰是提供了寫出優雅代碼的一些思路,希望可以幫助和啟發到你。

參考&鳴謝:

https://www.tuicool.com/wx/2euqQvZ

http://www.blogjava.net/xzclog/archive/2006/10/16/75399.html

作者:王磊

編輯:陶家龍

出處:轉載自微信公眾號Java中文社群(ID:javacn666)

 

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2020-07-13 08:40:21

BAT模具設計

2013-06-17 10:45:34

2019-12-02 14:22:01

浪費云計算支出

2020-11-02 07:05:54

虛擬內存Go

2019-11-15 10:56:48

MySQLSQL語句

2025-08-27 01:33:00

2019-10-08 14:40:53

Java線程

2021-02-21 08:48:19

技術升職程序員

2011-12-31 14:47:10

Web App

2020-03-31 10:58:38

2015-09-29 10:12:10

2015-06-05 10:17:01

老羅創業不太成功

2017-03-25 21:32:40

Python編碼

2024-05-27 00:30:00

NumPyPython開源庫

2017-08-14 18:00:13

共享單車摩拜

2022-08-16 15:20:12

微服務IT運維

2023-01-24 16:13:22

編程語言JavaIT

2018-01-12 05:04:34

移動支付用微信支付支付寶

2019-08-09 17:44:32

戴爾

2014-12-10 10:45:56

Android應用權限
點贊
收藏

51CTO技術棧公眾號

欧美成人艳星乳罩| 国产女人aaa级久久久级| 欧美日韩国产va另类| 尤物网站在线观看| 人人鲁人人莫人人爱精品| 中文av一区二区| 91精品视频在线免费观看| 久久久久久久极品内射| 亚洲动漫精品| 欧美另类z0zxhd电影| av网站大全免费| 黄色在线视频观看网站| 国产剧情一区在线| 日韩美女在线播放| 老湿机69福利| 综合伊思人在钱三区| 欧美精品在线观看播放| 青青草成人免费在线视频| 高清毛片在线看| av中文字幕不卡| 91精品久久久久久久久久另类| 妺妺窝人体色www在线下载| 偷拍一区二区| 日韩美女视频在线| 最新中文字幕免费视频| 大桥未久在线视频| 亚洲桃色在线一区| 日韩在线电影一区| 少妇高潮一区二区三区99小说| 极品少妇一区二区三区精品视频| 欧美自拍大量在线观看| 久久综合激情网| 色喇叭免费久久综合| 国产视频精品久久久| 欧美性生交xxxxx| 一区二区三区| 欧美午夜电影一区| 国产精品免费观看久久| 高清电影在线免费观看| 亚洲欧美成人一区二区三区| 日韩精品在在线一区二区中文| 好男人在线视频www| 国产一区二区在线电影| 国产精品午夜一区二区欲梦| av一级在线观看| 国产精品日韩欧美一区| 久久久影视精品| 久草视频在线免费看| 欧美一区综合| 久久婷婷国产麻豆91天堂| www.99re6| 成人av二区| 在线日韩日本国产亚洲| 亚洲无人区码一码二码三码的含义| 里番精品3d一二三区| 精品国产伦一区二区三区观看方式| 亚洲在线观看网站| 日韩五码电影| 69久久夜色精品国产69蝌蚪网 | 一本精品一区二区三区| www高清在线视频日韩欧美| 美国精品一区二区| 99国产**精品****| 久久精品中文字幕免费mv| 国产喷水在线观看| 亚洲精彩视频| 久久91亚洲人成电影网站| 九九热这里有精品视频| 亚洲国产99| 亚洲91av视频| 美女又爽又黄免费视频| 日韩精品欧美精品| 国产精品人人做人人爽| 一区不卡在线观看| 国产成人综合自拍| 精品九九九九| 国产视频精选在线| 国产精品久久久久永久免费观看| 秋霞在线一区二区| 岛国毛片av在线| 黑人巨大精品欧美一区免费视频| 国产成人a亚洲精v品无码| 性感美女一区二区在线观看| 欧美三级三级三级爽爽爽| 爽爽爽在线观看| 成人黄色av网址| 亚洲精品网址在线观看| 香蕉久久久久久久| 国产精品久久| 日韩av电影手机在线| 91麻豆一区二区| 大尺度一区二区| 日本不卡一区二区三区在线观看| 免费大片在线观看www| 一个色综合av| 日本女优爱爱视频| 日韩精品三级| 亚洲欧美成人网| 永久久久久久久| 老妇喷水一区二区三区| 国产美女久久精品香蕉69| 国模无码一区二区三区| 国产性做久久久久久| 亚洲五码在线观看视频| 成人性生交大片免费网站| 91.成人天堂一区| 搡老熟女老女人一区二区| 91久久电影| 欧美专区福利在线| 成人高潮片免费视频| 国产视频一区在线播放| 成人免费性视频| 国产精品蜜月aⅴ在线| 亚洲国产成人在线视频| 来吧亚洲综合网| 久久久久久婷| 国产伦精品一区二区三区视频免费| 一区二区三区视频网站| 欧美午夜视频一区二区| 国产又粗又猛又爽又黄| 三级电影一区| 欧美在线视频一区| 亚洲成人中文字幕在线| 国产精品你懂的在线欣赏| 青娱乐自拍偷拍| 欧美成人精品一级| 色妞色视频一区二区三区四区| 中文字幕av影院| av福利精品导航| 男人的天堂视频在线| 欧美视频免费看| 永久免费毛片在线播放不卡| 国产大片中文字幕| 国产激情偷乱视频一区二区三区| 亚洲va韩国va欧美va精四季| 在线高清av| 亚洲第一中文字幕在线观看| 放荡的美妇在线播放| 99久久久久久久久久| 亚洲免费专区| 97国产精品久久| www.黄色片| 亚洲色欲色欲www在线观看| 欧美日韩在线观看不卡| 欧美美乳视频| 4444欧美成人kkkk| 欧美一区二区三区激情| 一级女性全黄久久生活片免费| 国产九九九视频| 一本到12不卡视频在线dvd| 91精品国产综合久久久久久久久| 三区四区电影在线观看| 欧美色视频在线| avhd101老司机| 日本不卡视频一二三区| 色综合影院在线观看| 日韩精品影片| 91精品网站在线观看| 亚洲精品成人av| 清纯粉嫩极品夜夜嗨av| 国产激情91久久精品导航| 男人日女人的bb| 亚洲1区在线| 久久久久久久色| 婷婷伊人综合中文字幕| 午夜视频在线观看一区二区三区| 日本人添下边视频免费| 99热在线精品观看| 精品一区二区三区视频日产| xx欧美视频| 在线一区二区日韩| 国产欧美第一页| 亚洲在线视频网站| 精品少妇人妻一区二区黑料社区| 日韩av一区二区三区| 一区二区三区在线视频111| 精品视频在线观看网站| 久久久久亚洲精品国产| 日本一级在线观看| 欧美色倩网站大全免费| 久一视频在线观看| 久久午夜电影网| 亚洲五月天综合| 国产精品调教| 91精品国产乱码久久久久久久久| 亚洲av成人无码久久精品老人| 欧美色图在线视频| 天天干天天舔天天操| 极品少妇xxxx精品少妇| 国产精品成人久久电影| 亚洲精品国产setv| 国产剧情久久久久久| 污污的网站在线看| 精品中文字幕久久久久久| 一级片在线观看视频| 亚洲成人免费av| 中文字幕第20页| 国产精品1区2区3区在线观看| 国产肥臀一区二区福利视频| 色综合咪咪久久网| 国产手机精品在线| 日本黄色成人| 欧美与黑人午夜性猛交久久久| 日本在线观看视频| 精品一区电影国产| 超碰在线播放97| 久久99国产综合精品免费| 国产精品国产一区| 成人看片在线| 日韩成人亚洲| 欧美激情亚洲视频| h视频网站在线观看| 日韩女优av电影| 中文永久免费观看| 欧美日韩精品在线播放| 国产一二三四区| 久久精品欧美日韩| 色婷婷精品久久二区二区密| 久久激情五月激情| 凹凸日日摸日日碰夜夜爽1| 精品成人在线| 日本一本草久p| 日韩专区精品| 日产精品高清视频免费| 老司机aⅴ在线精品导航| 99视频免费观看| 97久久中文字幕| 国产精品欧美一区二区三区奶水 | 在线视频精品一| 欧美一级性视频| 日韩欧美国产午夜精品| 国产伦精品一区二区三区免.费| 久久一级电影| 国产欧美日本在线| 日韩综合一区二区三区| 国产日韩欧美91| 成人做爰免费视频免费看| 日韩av大片免费看| 中文字幕成在线观看| 555www成人网| 午夜影院在线观看国产主播| 亚州成人av在线| 九九色在线视频| 欧美俄罗斯性视频| 好看的中文字幕在线播放| 久久国产天堂福利天堂| 国产成人无吗| 欧美大片在线影院| 国产精品探花在线| 国产综合在线视频| 高清视频在线观看三级| 91国产视频在线| heyzo高清在线| 97在线视频免费观看| 免费h在线看| 日本免费在线精品| 欧美日韩亚洲国产| 国产精品视频成人| 国产精品亚洲欧美日韩一区在线 | 久久综合亚洲社区| av在线免费网站| 欧美猛交免费看| 波多野结衣在线观看| 91国产精品视频在线| 美女100%一区| 国产精品自在线| 欧美久久一区二区三区| 国产精品一区二区你懂得| 欧美日韩精品一区二区三区在线观看| 精品卡一卡二| 视频国产一区| 一区二区精品在线| 午夜久久福利| 无码人妻丰满熟妇区96| 日本最新不卡在线| 伊人五月天婷婷| av中文字幕一区| youjizz亚洲女人| 亚洲精品久久久蜜桃| 日韩欧美亚洲视频| 欧美性生活大片视频| 国产美女三级无套内谢| 亚洲国产精品中文| 福利在线午夜| 欧美国产高跟鞋裸体秀xxxhd| 亚洲国产福利| 91久久精品久久国产性色也91| 国产66精品| 日韩少妇中文字幕| 欧美另类专区| 一区二区在线播放视频| 国产精品一区二区视频| 国产精品无码一区二区三区免费| 国产精品大尺度| 91精品国产乱码在线观看| 欧美日韩色综合| 天天操天天爱天天干| 日韩在线小视频| 色在线中文字幕| 91沈先生作品| 久久不见久久见免费视频7| 蜜臀av.com| 久久亚洲风情| 激情综合激情五月| 国产精品国模大尺度视频| 久草国产精品视频| 在线综合+亚洲+欧美中文字幕| 日韩专区一区二区| 欧美激情va永久在线播放| 成人a在线观看高清电影| 国产亚洲一区二区三区在线播放| 99久久www免费| 黄色高清无遮挡| av不卡免费电影| 曰本女人与公拘交酡| 欧美日韩一区二区三区免费看| 免费看av毛片| 欧美福利视频在线观看| 国产第一亚洲| 日韩国产精品一区二区| 亚洲视频成人| 久久久无码人妻精品无码| 亚洲天堂福利av| 伊人成人在线观看| 国产亚洲精品一区二区| 男人天堂视频在线观看| 成人在线观看91| 欧美高清日韩| 天堂av2020| 国产精品久久久久久久午夜片 | 国产亚洲一区在线| 亚洲精品成人无码毛片| 亚洲欧美日韩国产中文在线| 中文字幕欧美人妻精品| 一区二区三区美女xx视频| 在线成人av观看| 鲁丝片一区二区三区| 亚洲精品韩国| 国产精品久久久久久久无码| 亚洲韩国精品一区| 性生交大片免费看女人按摩| 久久色精品视频| 中文成人在线| 中文字幕综合在线观看| 精品制服美女久久| 成人免费精品动漫网站| 91精品国产综合久久福利软件| 日韩精品毛片| 91色视频在线导航| 欧美福利影院| 天天躁日日躁狠狠躁av| 午夜欧美大尺度福利影院在线看| 欧美视频在线观看一区二区三区| 久久久久久久一| 欧美激情99| 欧美激情国产精品日韩| 久久精品视频在线看| 少妇又紧又色又爽又刺激视频 | 日韩午夜免费| 久久丫精品国产亚洲av不卡| 色综合中文综合网| 你懂的在线看| 国产精品视频一区二区三区四| 手机在线电影一区| 性一交一黄一片| 亚洲va中文字幕| 男人天堂亚洲二区| 国产精自产拍久久久久久| 欧美在线91| 狠狠人妻久久久久久综合蜜桃| 欧美综合一区二区三区| 国产婷婷视频在线| 国产乱码精品一区二区三区不卡| 一区二区激情| 少妇高潮惨叫久久久久| 日韩一区二区视频| 在线视频超级| 一区二区在线观看网站| 国产1区2区3区精品美女| 天天操夜夜操视频| 久久精品久久久久| 久久精品论坛| 久热精品在线观看视频| 亚洲影院久久精品| 国产美女视频一区二区三区 | 欧美黑人一级爽快片淫片高清| 欧美做受69| 在线观看免费不卡av| 亚洲妇女屁股眼交7| www在线免费观看| 成人在线免费网站| 日韩国产欧美在线播放| 久久综合综合久久| 在线成人激情黄色| 国产一区在线电影| 最新天堂中文在线| 午夜婷婷国产麻豆精品| 日本成人网址| 鲁丝一区鲁丝二区鲁丝三区| 国产一区二区三区久久久|