這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Java中如何優(yōu)化if-else,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
為什么我們寫的代碼都是if-else?
程序員想必都經(jīng)歷過(guò)這樣的場(chǎng)景:剛開(kāi)始自己寫的代碼很簡(jiǎn)潔,邏輯清晰,函數(shù)精簡(jiǎn),沒(méi)有一個(gè)if-else,
可隨著代碼邏輯不斷完善和業(yè)務(wù)的瞬息萬(wàn)變:比如需要對(duì)入?yún)⑦M(jìn)行類型和值進(jìn)行判斷;這里要判斷下對(duì)象是否為null;不同類型執(zhí)行不同的流程。
落地到具體實(shí)現(xiàn)只能不停地加if-else來(lái)處理,漸漸地,代碼變得越來(lái)越龐大,函數(shù)越來(lái)越長(zhǎng),文件行數(shù)也迅速突破上千行,維護(hù)難度也越來(lái)越大,到后期基本達(dá)到一種難以維護(hù)的狀態(tài)。
雖然我們都很不情愿寫出滿屏if-else的代碼,可邏輯上就是需要特殊判斷,很絕望,可也沒(méi)辦法避免啊。
其實(shí)回頭看看自己的代碼,寫if-else不外乎兩種場(chǎng)景:異常邏輯處理和不同狀態(tài)處理。
兩者最主要的區(qū)別是:異常邏輯處理說(shuō)明只能一個(gè)分支是正常流程,而不同狀態(tài)處理都所有分支都是正常流程。
怎么理解?舉個(gè)例子:
//舉例一:異常邏輯處理例子 Object obj = getObj(); if (obj != null) { //do something }else{ //do something } //舉例二:狀態(tài)處理例子 Object obj = getObj(); if (obj.getType == 1) { //do something }else if (obj.getType == 2) { //do something }else{ //do something }