2 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
不需要,非必要條件下沒(méi)必要去做,盡早讓其自然拋出nullPointException
有助于查找到問(wèn)題。除非是諸如查詢,查不出來(lái)也有可能,這個(gè)時(shí)候盡量做,然后友好拋出異常信息,當(dāng)然,這個(gè)如果是不正常邏輯,也盡量早拋,不要拋null
指針而已。

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
不是每個(gè)地方都必須要判空的,如果每個(gè)地方都去判斷空,你會(huì)發(fā)現(xiàn)到處都有判空的if...else...語(yǔ)句,這樣代碼會(huì)非常糟糕,也不利于代碼維護(hù)。
如果是處理外部輸入的邏輯,或是對(duì)外服務(wù)的接口的實(shí)現(xiàn)。那么因?yàn)橛肋h(yuǎn)不能外部輸入會(huì)有出現(xiàn)什么意外,為空是很可能的,這個(gè)時(shí)候就一定要處理判空。
如果是內(nèi)部處理的邏輯,比如在一個(gè)類的private方法,通常private方法是為了處理一些公共的邏輯但又不想把邏輯提供出去,這個(gè)時(shí)候就沒(méi)必要去判空。如果空出現(xiàn)空指針,在外層的調(diào)用里catch住就行了,做了判空處理,程序運(yùn)行了半天雖然沒(méi)報(bào)錯(cuò),但是程序卻已經(jīng)進(jìn)入一些意外情況。這樣反而不好。
還有一個(gè)個(gè)人總結(jié)的是否需要判空的依據(jù)是,當(dāng)一個(gè)變量在邏輯上不出意外的情況下不會(huì)為空我就不去做判空。如果在邏輯上很有空能為空那就去做判空,并返回一個(gè)錯(cuò)誤返回,這個(gè)錯(cuò)誤返回很有可能是業(yè)務(wù)上的返回,如果是一個(gè)接口,那么提示輸入字段不合法等等。
添加回答
舉報(bào)