精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

解鎖新姿勢:干掉過多的if-else!

Android編程精選 ? 來源:CSDN ? 作者:飯一碗 ? 2022-11-12 10:01 ? 次閱讀

場景

日常開發,if-else語句寫的不少吧??當邏輯分支非常多的時候,if-else套了一層又一層,雖然業務功能倒是實現了,但是看起來是真的很不優雅,尤其是對于我這種有強迫癥的程序"猿",看到這么多if-else,腦袋瓜子就嗡嗡的,總想著解鎖新姿勢:干掉過多的if-else!??!

本文將介紹三板斧手段:

優先判斷條件,條件不滿足的,邏輯及時中斷返回;

融入策略模式;

策略模式+工廠+單例模式,錦上添花;

接下來先附上一段很久以前自己寫的業務代碼,核心邏輯就是在支付回調中根據用戶購買的價格包賦予用戶對應的權益(VIP視頻會員天數+抽獎機會次數)。

我的天,太多if-else了……(看不清楚可以點擊圖片放大)

ace07e42-61c0-11ed-8abf-dac502259ad0.png

1、優先判斷條件,不滿足及時中斷

這點非常容易理解,就是說在業務邏輯里面,先把不符合條件的給先過濾掉,而不是層層嵌套if-else判斷,結合代碼圖看一下:

ad3aa1c4-61c0-11ed-8abf-dac502259ad0.pngad65e47e-61c0-11ed-8abf-dac502259ad0.png

2、策略模式改造

先用策略模式替換掉文章開頭講到的,用戶充值后根據價格包(付的多少錢)給用戶增加VIP天數及抽檢機會次數的邏輯,我這里就簡化成"根據-價格包區分給用戶增加不同的體育會員視頻VIP天數"這個動作來講解:

ad8555b6-61c0-11ed-8abf-dac502259ad0.pngad9c4b22-61c0-11ed-8abf-dac502259ad0.pngadadb4fc-61c0-11ed-8abf-dac502259ad0.pngadbfe0f0-61c0-11ed-8abf-dac502259ad0.pngadd997c0-61c0-11ed-8abf-dac502259ad0.png

表面上看,代碼稍微優雅了點,但是還是沒和if-else徹底說拜拜,且recharge()充值方法可單獨拎出來,只需要根據priceCode實例化不同的策略對象即可:

ade6bdec-61c0-11ed-8abf-dac502259ad0.png

3、策略模式+工廠+單例模式,錦上添花

接下來使用"工廠類+單例"來給代碼加點料:

ae0104e0-61c0-11ed-8abf-dac502259ad0.pngae2d21a6-61c0-11ed-8abf-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    895

    瀏覽量

    41401

原文標題:三種新姿勢:幫你干掉過多的if-else

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    十個精選優質直播,工程師們最喜歡看哪一個?

    開啟工程師學習之旅,解鎖學習新姿勢,贏取開開學獎勵
    的頭像 發表于 02-27 17:56 ?0次閱讀

    C語言中if語句、if-else語句和switch語句詳解

    在C語言中,有三種條件判斷結構:if語句、if-else語句和switch語句。
    發表于 08-18 16:36 ?1.2w次閱讀
    C語言中if語句、<b class='flag-5'>if-else</b>語句和switch語句詳解

    煉獄傳奇-if_else與case之戰

    Verilog HDL語言中存在兩種分支語言:● if-else 條件分支語句● case 分支控制語句1. if-else條件分支語句if-else 條件分支語句的作用是根據指定的判斷條件是否滿足
    發表于 03-31 09:51

    解鎖了這些姿勢!你就可以嘿!嘿!嘿!

    ”公眾號,并且下載“電子發燒友”APP,截圖帶微信號回本帖! 解鎖上方任意姿勢的小伙伴們,趕緊掃描下方的二維碼,發送你的論壇用戶名驗證進群哦!活動時間:2016-1-25—2016-2-1紅包發多少?看
    發表于 01-25 13:55

    Proteus之if-else語句的應用

    Proteus之if-else語句的應用,很好的Proteus資料,快來學習吧。
    發表于 04-18 14:49 ?0次下載

    特倫托大學與Inria合作:使用GAN生成人體的新姿勢圖像

    使用GAN(對抗生成網絡)生成人體的新姿勢圖像。研究人員提出的可變形跳躍連接和最近鄰損失函數,更好地捕捉了局部的紋理細節,緩解了之前研究生成圖像模糊的問題,生成了更可信、質量更好的圖像。
    的頭像 發表于 01-29 16:34 ?9557次閱讀
    特倫托大學與Inria合作:使用GAN生成人體的<b class='flag-5'>新姿勢</b>圖像

    FPGA學習系列:if-else與case

    設計背景:不管是在什么軟件和硬件語言,我們在我們的代碼中都或多或少的用到這兩條語句,if..else與case語句,今天我們將學習verilog中的這兩條語句,其實不管在什么語言中這兩個語句都是一樣
    的頭像 發表于 06-01 16:59 ?1.2w次閱讀
    FPGA學習系列:<b class='flag-5'>if-else</b>與case

    移動4G網絡,開啟看世界杯直播新姿勢

    江蘇移動4G網絡對南通近海海域60公里實現了4G網絡連續覆蓋,為球迷開啟看世界杯直播新姿勢
    發表于 06-25 11:30 ?1833次閱讀

    從入門到高級替換If-Else的5種方法示例

    本文并不肯定或者否定哪一種寫法,僅僅為大家提供一些其他的編碼思路或者一些值得借鑒的點子。 設計更好的軟件,替換 If-Else 的 5 種方法,從入門到高級示例 If-Else 通常是一個糟糕的選擇
    的頭像 發表于 02-20 16:27 ?6771次閱讀
    從入門到高級替換<b class='flag-5'>If-Else</b>的5種方法示例

    不會有人不知道怎么優雅的替換if-else語句吧

    又一層,雖然業務功能倒是實現了,但是看起來是真的很不優雅,尤其是對于我這種有強迫癥的程序“猿”,看到這么多if-else,腦袋瓜子就嗡嗡的,總想著解鎖新姿勢干掉過多
    的頭像 發表于 07-28 15:46 ?1411次閱讀
    不會有人不知道怎么優雅的替換<b class='flag-5'>if-else</b>語句吧

    關于Python中的“for-else”功能

    無論使用哪種編程語言,我們都會編寫“if-else”語句,但是“for-else”呢?
    發表于 09-26 14:44 ?540次閱讀

    什么是SystemVerilog-決策語句-if-else語句?

    決策語句(Decision statements)允許程序塊的執行流程根據設計中信號的當前值分支到特定語句。SystemVerilog有兩個主要的決策語句:if…else語句和case語句,使用關鍵字case、case…inside,casex和casez。
    的頭像 發表于 02-09 14:15 ?1105次閱讀
    什么是SystemVerilog-決策語句-<b class='flag-5'>if-else</b>語句?

    代碼如何優化掉多余的if/else?

    ;} 其實,每次看到上面這種代碼,我都心里抓癢,完全可以先判斷 !condition ,干掉 else。 if (!condition) { return xxx;} // do s
    的頭像 發表于 06-22 10:01 ?756次閱讀
    代碼如何優化掉多余的if/<b class='flag-5'>else</b>?

    如何通過策略模式簡化if-else

    相信大家日常開發中會經常寫各種分支判斷語句,比如 if-else ,當分支較多時,代碼看著會比較臃腫,那么如何優化呢? 1、什么是策略模式? Define a family
    的頭像 發表于 10-08 16:08 ?735次閱讀
    如何通過策略模式簡化<b class='flag-5'>if-else</b>

    Verilog代碼:if-else和case的電路結構和區別

    每個if-else就是一個2選1mux器。當信號有明顯優先級時,首先要考慮if-else,但是if嵌套過多也會導致速度變慢;if語句結構較慢,但占用面積小。 嵌套的if語句如果使用不當,就會
    的頭像 發表于 11-29 15:10 ?2898次閱讀