真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java:如何更優(yōu)雅的處理空值?-創(chuàng)新互聯(lián)

在筆者幾年的開發(fā)經(jīng)驗中,經(jīng)??吹巾椖恐写嬖诘教幙罩蹬袛嗟那闆r,這些判斷,會讓人覺得摸不著頭緒,它的出現(xiàn)很有可能和當前的業(yè)務(wù)邏輯并沒有關(guān)系。但它會讓你很頭疼。

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供網(wǎng)站設(shè)計、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、自適應(yīng)網(wǎng)站建設(shè)、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!

有時候,更可怕的是系統(tǒng)因為這些空值的情況,會拋出空指針異常,導(dǎo)致業(yè)務(wù)系統(tǒng)發(fā)生問題。

此篇文章,我總結(jié)了幾種關(guān)于空值的處理手法,希望對讀者有幫助。

在這里小編建了一個前端學習交流扣扣群:132667127,我自己整理的最新的前端資料和高級開發(fā)教程,如果有想需要的,可以加群一起學習交流

業(yè)務(wù)中的空值

場景

存在一個UserSearchService用來提供用戶查詢的功能:

public interface UserSearchService{
 List listUser();
 User get(Integer id);
}

問題現(xiàn)場

對于面向?qū)ο笳Z言來講,抽象層級特別的重要。尤其是對接口的抽象,它在設(shè)計和開發(fā)中占很大的比重,我們在開發(fā)時希望盡量面向接口編程。

對于以上描述的接口方法來看,大概可以推斷出可能它包含了以下兩個含義:

  • listUser(): 查詢用戶列表
  • get(Integer id): 查詢單個用戶

在所有的開發(fā)中,XP推崇的TDD模式可以很好的引導(dǎo)我們對接口的定義,所以我們將TDD作為開發(fā)代碼的”推動者”。

對于以上的接口,當我們使用TDD進行測試用例先行時,發(fā)現(xiàn)了潛在的問題:

  • listUser() 如果沒有數(shù)據(jù),那它是返回空集合還是null呢?
  • get(Integer id) 如果沒有這個對象,是拋異常還是返回null呢?

深入listUser研究

我們先來討論

listUser()

這個接口,我經(jīng)常看到如下實現(xiàn):

public List listUser(){
 List userList = userListRepostity.selectByExample(new UserExample());
 if(CollectionUtils.isEmpty(userList)){//spring util工具類
 return null;
 }
 return userList;
}

這段代碼返回是null,從我多年的開發(fā)經(jīng)驗來講,對于集合這樣返回值,最好不要返回null,因為如果返回了null,會給調(diào)用者帶來很多麻煩。你將會把這種調(diào)用風險交給調(diào)用者來控制。

如果調(diào)用者是一個謹慎的人,他會進行是否為null的條件判斷。如果他并非謹慎,或者他是一個面向接口編程的狂熱分子(當然,面向接口編程是正確的方向),他會按照自己的理解去調(diào)用接口,而不進行是否為null的條件判斷,如果這樣的話,是非常危險的,它很有可能出現(xiàn)空指針異常!

Java:如何更優(yōu)雅的處理空值?
本文標題:Java:如何更優(yōu)雅的處理空值?-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/iijdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部