第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

LBYL和EAFP在Java中?

LBYL和EAFP在Java中?

我最近正在自學(xué)Python,并發(fā)現(xiàn)了有關(guān)代碼執(zhí)行之前的錯(cuò)誤檢查的LBYL / EAFP習(xí)慣用法。在Python中,似乎可接受的樣式是EAFP,并且似乎與該語言配合良好。LBYL(大號(hào) OOK 乙安伏y OU 大號(hào) EAP):def safe_divide_1(x, y):    if y == 0:        print "Divide-by-0 attempt detected"        return None    else:        return x/yEAFP(它的ê asier到一個(gè) SK ?F orgiveness比P ermission):def safe_divide_2(x, y):    try:        return x/y    except ZeroDivisionError:          print "Divide-by-0 attempt detected"        return None我的問題是:我什至從未聽說過使用EAFP作為主要的數(shù)據(jù)驗(yàn)證結(jié)構(gòu),它來自Java和C ++背景。EAFP是在Java中明智使用的東西嗎?還是異常產(chǎn)生了太多開銷?我知道只有在實(shí)際引發(fā)異常時(shí)才有開銷,因此我不確定為什么不使用更簡單的EAFP方法。只是偏愛嗎?
查看完整描述

3 回答

?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

就個(gè)人而言,我認(rèn)為這是按慣例支持的,EAFP絕不是一個(gè)好方法。您可以將其視為等同于以下內(nèi)容:


if (o != null)

    o.doSomething();

else

    // handle

相對(duì)于:


try {

    o.doSomething()

}

catch (NullPointerException npe) { 

    // handle

}

此外,請(qǐng)考慮以下事項(xiàng):


if (a != null)

    if (b != null)

        if (c != null)

            a.getB().getC().doSomething();

        else

            // handle c null

    else

        // handle b null

else

    // handle a null

這看起來可能不太優(yōu)雅(是的,這是一個(gè)粗糙的示例-忍受),但是與處理所有錯(cuò)誤相比,它為您提供了更大的粒度來處理錯(cuò)誤,然后將其包裝在try-catch中以獲取該錯(cuò)誤NullPointerException,然后嘗試弄清楚在哪里以及為什么得到它。


我看待它的方式EAFP絕不應(yīng)該使用,除非極少數(shù)情況。另外,由于您提出了問題:是的,即使未引發(fā)異常,try-catch塊也確實(shí)會(huì)產(chǎn)生一些開銷。


查看完整回答
反對(duì) 回復(fù) 2019-10-16
?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

除了Python和Java中異常的相對(duì)代價(jià)外,請(qǐng)記住,它們之間在哲學(xué)/態(tài)度上存在差異。Java試圖對(duì)類型(以及其他所有類型)非常嚴(yán)格,要求對(duì)類/方法簽名進(jìn)行明確,詳細(xì)的聲明。它假定您在任何時(shí)候都應(yīng)該確切地知道您正在使用什么類型的對(duì)象以及它能夠做什么。相反,Python的“鴨子類型”意味著您不確定(也不應(yīng)該在意)對(duì)象的清單類型是什么,只需要在請(qǐng)求時(shí)就注意它會(huì)嘎嘎作響。在這種寬容的環(huán)境中,唯一理智的態(tài)度是假定事情會(huì)成功,但如果事情沒有后果,則要做好應(yīng)對(duì)的準(zhǔn)備。Java的自然限制 非常適合這種隨意的方法。(這并不是要貶低方法或語言,而是要說這些態(tài)度是每種語言習(xí)語的一部分,并且在不同語言之間復(fù)制習(xí)語通常會(huì)導(dǎo)致尷尬和溝通不暢。)

查看完整回答
反對(duì) 回復(fù) 2019-10-16
  • 3 回答
  • 0 關(guān)注
  • 651 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)