枚舉中添加新方法消除IF/ELSE

一、如下需求:通過JAVA代碼實現(xiàn)根據(jù)空氣指數(shù)在對應(yīng)區(qū)間獲取空氣質(zhì)量分類

空氣質(zhì)量對照表

二缩抡、通常實現(xiàn)以上需求邏輯代碼是非常簡單的歹叮,2分鐘寫完代碼。


空氣質(zhì)量拿到區(qū)間評級

三辙芍、但是如果空氣質(zhì)量對照表越來越多的情況下啡彬,就會有越來越多的分支代碼出現(xiàn)。此時需要我們通過重構(gòu)的方式優(yōu)化我們的邏輯故硅,讓其更加的面向?qū)ο蟆?/p>

從上面的邏輯代碼不難看出是通過if條件尋找對應(yīng)的處理邏輯的實現(xiàn)庶灿,本質(zhì)是condition和event的分類,即條件和事件的耦合吃衅。了解了以上代碼的實現(xiàn)往踢,那么條件和事件是可以被分離解耦的。那么是可以從兩個維度去理解的:條件的專注點(diǎn)是獲取到對應(yīng)的區(qū)間徘层,事件是返回評級信息峻呕。

讓枚舉具備條件處理的能力利职,即獲得區(qū)間判斷

枚舉條件判斷

讓枚舉具備條件,選擇事件處理的能力

利用枚舉登記狀態(tài)和事件

基于以上兩步操作后瘦癌,后續(xù)無論增加多少條件猪贪,只需在枚舉上增加即可,直觀又易理解讯私。

簡潔代碼

精簡代碼不是目的热押,是為了更面向?qū)ο蟮目创浖O(shè)計問題。

拿著鑰匙去訪問接口

?

枚舉事件


寫作式代碼


異常返回碼

案例分享:《實體類功能擴(kuò)展妄帘,增強(qiáng)擴(kuò)展能力和可讀性》

假設(shè)一種場景:有一個TLibraryCode類楞黄,該類記錄了各種擴(kuò)展參數(shù)。如多語言維度抡驼,有中文鬼廓、英文。

語言類型

但是你是知道未來會增加其他語言致盟,如德文碎税、泰文或者更多。那么就可能出現(xiàn)以下這種情況馏锡。

動態(tài)變量替換

如果業(yè)務(wù)足夠復(fù)雜雷蹂,出現(xiàn)參數(shù)賦值的拼裝操作,如下圖:

業(yè)務(wù)復(fù)雜度影響了業(yè)務(wù)層的代碼

如果后面要增加新的語言類型杯道,那么關(guān)聯(lián)的改動地方就會很多匪煌,最終可能導(dǎo)致失控。

如何避免以上這種簡單的場景不復(fù)雜化党巾,讓往后業(yè)務(wù)修改也不會影響萎庭,且易于修改呢?

讓實體自己實現(xiàn)維度選擇處理功能齿拂,并提供統(tǒng)一的方法給外部調(diào)用驳规。重構(gòu)后的代碼如下。

讓實體類增加一個枚舉校驗
多語言設(shè)置
多語言選擇

通過以上的修改署海,外部的業(yè)務(wù)選擇組件是不需要修改的吗购。增加一種語言,這種語言的賦值和提取都在實體類中完成了砸狞。降低了后續(xù)修改引入風(fēng)險捻勉,代碼也更加易讀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刀森,一起剝皮案震驚了整個濱河市踱启,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖禽捆,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笙什,死亡現(xiàn)場離奇詭異,居然都是意外死亡胚想,警方通過查閱死者的電腦和手機(jī)琐凭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浊服,“玉大人统屈,你說我怎么就攤上這事⊙捞桑” “怎么了愁憔?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孽拷。 經(jīng)常有香客問我吨掌,道長,這世上最難降的妖魔是什么脓恕? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任膜宋,我火速辦了婚禮,結(jié)果婚禮上炼幔,老公的妹妹穿的比我還像新娘秋茫。我一直安慰自己,他們只是感情好乃秀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布肛著。 她就那樣靜靜地躺著,像睡著了一般跺讯。 火紅的嫁衣襯著肌膚如雪枢贿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天抬吟,我揣著相機(jī)與錄音萨咕,去河邊找鬼统抬。 笑死火本,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聪建。 我是一名探鬼主播钙畔,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼金麸!你這毒婦竟也來了擎析?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揍魂,沒想到半個月后桨醋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡现斋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年喜最,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庄蹋。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞬内,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出限书,到底是詐尸還是另有隱情虫蝶,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布倦西,位于F島的核電站能真,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扰柠。R本人自食惡果不足惜舟陆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耻矮。 院中可真熱鬧秦躯,春花似錦、人聲如沸裆装。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哨免。三九已至茎活,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琢唾,已是汗流浹背载荔。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留采桃,地道東北人懒熙。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像普办,于是被迫代替她去往敵國和親工扎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,913評論 6 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,090評論 1 32
  • 寫著寫著發(fā)現(xiàn)簡書提醒我文章接近字?jǐn)?shù)極限衔蹲,建議我換一篇寫了肢娘。 建議52:推薦使用String直接量賦值 一般對象都是...
    我沒有三顆心臟閱讀 1,335評論 2 4
  • 如果有一天我死了, 但這并不是我生命的終結(jié)。 我的生命加上你還懷念我的時間橱健, 直至你對我最后一點(diǎn)記憶的抹去而钞, 這才...
    行靖之晚閱讀 244評論 0 1
  • 偶然在微博上看到了一句話“你有沒有一個三人幫笨忌,一個很二逼,一個很靠譜俱病,一個傻傻很可愛官疲。”下面的配圖是小丸子和她的兩...
    風(fēng)子mio閱讀 958評論 8 4