我使用Java 8編碼已經(jīng)有些年頭,既用于新的應(yīng)用程序,也用來遷移現(xiàn)有的應(yīng)用,感覺是時(shí)候?qū)懸恍┪野l(fā)現(xiàn)的非常有用的“最佳實(shí)踐”。我個(gè)人并不喜歡“最佳實(shí)踐”這個(gè)說法,因?yàn)樗馕吨耙坏肚小钡慕鉀Q方案,而編碼不可能是這樣的工作方式——我們需要親自去發(fā)現(xiàn)什么樣的解決方案才是有效的。但是我發(fā)現(xiàn)了一些Java 8代碼中可以幫助我們的一些選擇,讓我們一起來看看吧。

1.Optional

Optional是一個(gè)嚴(yán)重被低估的功能,并且有潛力刪除很多困擾我們的NullPointerExceptions。這在代碼邊界中(要么是正在使用的API,要么是正在暴露的API)特別有用,因?yàn)樗试S你和你的調(diào)用代碼來推理所期待的東西。

然而,不加思考和設(shè)計(jì)就應(yīng)用Optional可能會(huì)導(dǎo)致影響大量的類,并可能導(dǎo)致可讀性更差。下面是一些關(guān)于如何高效使用Optional的技巧。

Optional應(yīng)該只用于返回類型

……不是參數(shù),也不是字段。幸運(yùn)的是,IntelliJ IDEA的讓你打開檢查來查看是是否遵循這些建議。

Optional值應(yīng)在遇到它們的地方中處理。IntelliJ IDEA的建議會(huì)防止代碼Optional泄漏,所以請(qǐng)記得在你發(fā)現(xiàn)Optional的地方處理它,迅速采取行動(dòng)。

不應(yīng)該簡單調(diào)用get()

Optional的功能是表達(dá)這個(gè)值可能是空的,并讓你應(yīng)對(duì)這種情況。因此,在對(duì)它做任何事情之前一定要檢查是否有一個(gè)值。只是簡單得調(diào)用get()而不先檢查isPresent()在某些時(shí)候可能會(huì)導(dǎo)致空指針。幸運(yùn)的是,IntelliJ IDEA也有檢查可以提醒你這一點(diǎn)。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式