成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

寫通俗易懂代碼-用衛(wèi)語(yǔ)句替代嵌套條件表達(dá)式

tracy / 1316人閱讀

摘要:在重構(gòu)法則上,這種叫法則,衛(wèi)語(yǔ)句。在我們使用語(yǔ)句時(shí),判斷是否是錯(cuò)誤的情況出現(xiàn)嵌套,可以是用語(yǔ)句,讓失敗前置。

問(wèn)題:
當(dāng)我們?cè)趯憳I(yè)務(wù)邏輯時(shí)候,不知不覺(jué)已經(jīng)把代碼嵌套了好幾次:

if (true){
            if (true){
                if (true){
                    for (){
                        if (true){
                            業(yè)務(wù)代碼
                        }
                    }
                }
            }
        }

在有比較復(fù)雜的判斷和需要遍歷處理業(yè)務(wù)時(shí)候,經(jīng)常會(huì)出現(xiàn)上面這種情況,這些代碼在執(zhí)行起來(lái)是沒(méi)問(wèn)題。但是這樣的代碼是一次性代碼,過(guò)一段時(shí)間,可能自己都不敢動(dòng)這里的邏輯了,更何況下一個(gè)接盤俠呢。
這樣的代碼很難弄明白每個(gè)條件的作用和執(zhí)行的流程,當(dāng)你讀到最里面一層的時(shí)候,估計(jì)你已經(jīng)記不起來(lái)當(dāng)初是為什么走進(jìn)這個(gè)if的了,對(duì)代碼的執(zhí)行流程完全不可控了。因?yàn)閳?zhí)行你預(yù)期的流程并不明顯,為了簡(jiǎn)化這種情況,需要將特殊情況隔離到立即結(jié)束執(zhí)行的多帶帶條件中。
這樣就能把箭頭代碼給拉平.

        if (false){

        }
        if (false){

        }
        if (false){

        }
        for (){
            if (false){
                continue;
            }
            業(yè)務(wù)代碼
        }

這是其中一類,可以將失敗前置。只要有一個(gè)條件不通過(guò),就快速返回失敗,如果到了最后一行,說(shuō)明所有判斷都通過(guò),剩下的就是你預(yù)期的結(jié)果。而不是一直查成功。
在重構(gòu)法則上,這種叫Guard Clause法則,衛(wèi)語(yǔ)句。
還有一種重構(gòu)方式,就是將復(fù)雜的業(yè)務(wù)邏輯從if塊中抽取為一個(gè)業(yè)務(wù)方法,即使這個(gè)方法只被使用一次。這種常常用在循環(huán)塊中,或者多個(gè)if...else塊中。
開(kāi)發(fā)中要深刻的理解到函數(shù)的作用,是代碼的封裝或者抽象。將復(fù)雜的業(yè)務(wù)邏輯進(jìn)行封裝抽象,讓我們從業(yè)務(wù)接口解耦,不需要關(guān)注具體實(shí)現(xiàn),從而簡(jiǎn)化我們的代碼,使得復(fù)雜的業(yè)務(wù)邏輯讀起來(lái)也有條不紊。
在我們使用if...else...語(yǔ)句時(shí),判斷是否是錯(cuò)誤的情況出現(xiàn)嵌套,可以是用guard clause語(yǔ)句,讓失敗前置。如果if過(guò)多,可能出現(xiàn)多個(gè)失敗code導(dǎo)致客戶端解析困難,我們可以將所有錯(cuò)誤結(jié)果包裝為一個(gè)異常狀態(tài)即可。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76421.html

相關(guān)文章

  • js之靈活使用可遍歷數(shù)組的API

    摘要:總結(jié)遍歷數(shù)組的時(shí)候應(yīng)該盡量使用這些,靈活運(yùn)用可以讓代碼更加優(yōu)雅,這種盡可能使用函數(shù)和鏈?zhǔn)秸{(diào)用的風(fēng)格很接近函數(shù)式編程,可以提高代碼質(zhì)量。 js中有很多可以遍歷數(shù)組的API,既然已經(jīng)封裝的這么好,為什么不在平常開(kāi)發(fā)的時(shí)候使用,本文講講forEach、map、filter、some、every、reduce這些API的使用,并且和普通的for語(yǔ)句作對(duì)比。 我們以一個(gè)對(duì)象數(shù)組作為測(cè)試數(shù)據(jù): c...

    sutaking 評(píng)論0 收藏0
  • 高性能javascript小結(jié)

    摘要:高性能小結(jié)文章轉(zhuǎn)載于我的博客最近看完了動(dòng)物叢書的高性能,覺(jué)得那本書的小結(jié)部分寫得非常不錯(cuò),簡(jiǎn)潔輕快易懂概括性很強(qiáng)。由于局部變量存在于作用域鏈的起始位置,因此訪問(wèn)局部變量比訪問(wèn)跨作用域變量更快。 高性能javascript小結(jié) 文章轉(zhuǎn)載于我的CSDN博客:http://blog.csdn.net/hello_world_20/article/details/46793317 最近看完了動(dòng)...

    wujl596 評(píng)論0 收藏0
  • python之遞歸生成器[yield用法]

    摘要:在所寫的暢銷書籍基礎(chǔ)教程中講到了遞歸生成器的用法。二易懂的程序其實(shí),遞歸生成器非常簡(jiǎn)單,主要分為兩部分基線條件和遞歸條件。我們以易懂通俗的方式來(lái)解釋遞歸生成器的用法,并且依次打印列表中的數(shù)字。 ? ? ? ? 在Magnus Lie Hetland所寫的暢銷書籍《Python基礎(chǔ)教程》中講到...

    littleGrow 評(píng)論0 收藏0
  • 《重構(gòu)---改善既有代碼的設(shè)計(jì)》

    摘要:為何重構(gòu)重構(gòu)有四大好處重構(gòu)改進(jìn)軟件設(shè)計(jì)如果沒(méi)有重構(gòu),程序的設(shè)計(jì)會(huì)逐漸腐敗變質(zhì)。經(jīng)常性的重構(gòu)可以幫助維持自己該有的形態(tài)。你有一個(gè)大型函數(shù),其中對(duì)局部變量的使用使你無(wú)法采用。將這個(gè)函數(shù)放進(jìn)一個(gè)單獨(dú)對(duì)象中,如此一來(lái)局部變量就成了對(duì)象內(nèi)的字段。 哪有什么天生如此,只是我們天天堅(jiān)持。 -Zhiyuan 國(guó)慶抽出時(shí)間來(lái)閱讀這本從師傅那里借來(lái)的書,聽(tīng)說(shuō)還是程序員的必讀書籍。 關(guān)于書的高清下載連...

    baihe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<