場景
日常開發,if-else語句寫的不少吧??當邏輯分支非常多的時候,if-else套了一層又一層,雖然業務功能倒是實現了,但是看起來是真的很不優雅,尤其是對于我這種有強迫癥的程序"猿",看到這么多if-else,腦袋瓜子就嗡嗡的,總想著解鎖新姿勢:干掉過多的if-else!!!
本文將介紹三板斧手段:
優先判斷條件,條件不滿足的,邏輯及時中斷返回;
融入策略模式;
策略模式+工廠+單例模式,錦上添花;
接下來先附上一段很久以前自己寫的業務代碼,核心邏輯就是在支付回調中根據用戶購買的價格包賦予用戶對應的權益(VIP視頻會員天數+抽獎機會次數)。
我的天,太多if-else了……(看不清楚可以點擊圖片放大)
1、優先判斷條件,不滿足及時中斷
這點非常容易理解,就是說在業務邏輯里面,先把不符合條件的給先過濾掉,而不是層層嵌套if-else判斷,結合代碼圖看一下:
2、策略模式改造
先用策略模式替換掉文章開頭講到的,用戶充值后根據價格包(付的多少錢)給用戶增加VIP天數及抽檢機會次數的邏輯,我這里就簡化成"根據-價格包區分給用戶增加不同的體育會員視頻VIP天數"這個動作來講解:
表面上看,代碼稍微優雅了點,但是還是沒和if-else徹底說拜拜,且recharge()充值方法可單獨拎出來,只需要根據priceCode實例化不同的策略對象即可:
3、策略模式+工廠+單例模式,錦上添花
接下來使用"工廠類+單例"來給代碼加點料:
審核編輯:劉清
-
中斷
+關注
關注
5文章
900瀏覽量
41751
原文標題:三種新姿勢:幫你干掉過多的if-else
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
煉獄傳奇-if_else與case之戰
解鎖了這些姿勢!你就可以嘿!嘿!嘿!
特倫托大學與Inria合作:使用GAN生成人體的新姿勢圖像
![特倫托大學與Inria合作:使用GAN生成人體的<b class='flag-5'>新姿勢</b>圖像](https://file.elecfans.com/web1/M00/45/81/pIYBAFpu3YCACXyBAAARbXrZpp0018.png)
FPGA學習系列:if-else與case
![FPGA學習系列:<b class='flag-5'>if-else</b>與case](https://file.elecfans.com/web1/M00/52/22/o4YBAFsQ7FWASRGRAAAmv47MpkY394.png)
從入門到高級替換If-Else的5種方法示例
![從入門到高級替換<b class='flag-5'>If-Else</b>的5種方法示例](https://file.elecfans.com/web1/M00/DE/E4/o4YBAGAwyTeAC02qAAAODVAn6pE384.png)
不會有人不知道怎么優雅的替換if-else語句吧
![不會有人不知道怎么優雅的替換<b class='flag-5'>if-else</b>語句吧](https://file.elecfans.com/web2/M00/0C/9F/poYBAGEBC9KAKL4lAAA888ehaW0720.png)
什么是SystemVerilog-決策語句-if-else語句?
![什么是SystemVerilog-決策語句-<b class='flag-5'>if-else</b>語句?](https://file.elecfans.com/web2/M00/8F/FF/pYYBAGPkjzmANUN3AAbOhWXY4Rw507.jpg)
代碼如何優化掉多余的if/else?
![代碼如何優化掉多余的if/<b class='flag-5'>else</b>?](https://file1.elecfans.com/web2/M00/8A/04/wKgaomSOq1OAUwR7AAJ9irjWfLg921.jpg)
如何通過策略模式簡化if-else
![如何通過策略模式簡化<b class='flag-5'>if-else</b>](https://file1.elecfans.com/web2/M00/A7/48/wKgaomUiY1uANrTxAADWKju2OtM335.jpg)
評論