東莞易思訓(xùn)教育

7x24小時(shí)咨詢熱線

400-660-3310

當(dāng)前位置 : 好學(xué)校 東莞易思訓(xùn)教育 學(xué)習(xí)資訊 資訊詳情

Java開(kāi)發(fā)者應(yīng)該改掉的3種不良習(xí)慣

2021-08-10

作為Java開(kāi)發(fā)人員,我們會(huì)使用一些習(xí)慣用法,典型的例子,如:返回null值、濫用getter和setter,即使在沒(méi)有必要的情況下也是如此。雖然在某些情況下,這些用法可能是適當(dāng)?shù)模ǔJ橇?xí)慣使然,或者是我們?yōu)榱俗屜到y(tǒng)正常工作的權(quán)宜之計(jì)。在本文中,我們將討論在Java初學(xué)者甚至高級(jí)開(kāi)發(fā)人員中都常見(jiàn)的三種情況,并探究它們是如何給我們帶來(lái)麻煩的。應(yīng)該指出的是,文中總結(jié)的規(guī)則并不是無(wú)論何時(shí)都應(yīng)該始終遵守的硬性要求。有時(shí)候,可能有一個(gè)很好的理由來(lái)使用這些模式解決問(wèn)題,但是總的來(lái)說(shuō),還是應(yīng)該相對(duì)的減少這些用法。首先,我們將從Null這個(gè)關(guān)鍵字開(kāi)始討論,它也是Java中使用最頻繁、但也是比較具有兩面性的關(guān)鍵字之一。

Java開(kāi)發(fā)者應(yīng)該改掉的3種不良習(xí)慣

1.Returning Null(返回Null)

null一直是開(kāi)發(fā)者較好的朋友,也是位于前列的敵人,這在Java中也不例外。在高性能應(yīng)用中,使用null是一種減少對(duì)象數(shù)量的可靠方法,它表明方法沒(méi)有要返回的值。與拋出異常不同,如果要通知客戶端不能獲取任何值,使用null是一種快速且低開(kāi)銷的方法,它不需要捕獲整個(gè)堆棧跟蹤。

在高性能系統(tǒng)的環(huán)境之外,null的存在會(huì)導(dǎo)致創(chuàng)建更繁瑣的null返回值檢查,從而破壞應(yīng)用程序,并在解引用空對(duì)象時(shí)導(dǎo)致NullPointerExceptions。在大多數(shù)應(yīng)用程序中,返回null有三個(gè)主要原因:

表示列表中找不到元素;

表示即使沒(méi)有發(fā)生錯(cuò)誤,也找不到有效值;

表示特殊情況下的返回值。

除非有任何性能方面的原因,否則以上每一種情況都有更好的解決方案,它們不使用null,并且強(qiáng)制開(kāi)發(fā)人員處理出現(xiàn)null的情況。更重要的是,這些方法的客戶端不會(huì)為該方法是否會(huì)在某些邊緣情況下返回null而傷腦筋。

2.Defaulting to Functional Programming(默認(rèn)使用函數(shù)式編程)

自從在JDK8中引入了stream和lambda表達(dá)式之后,就出現(xiàn)了向函數(shù)式編程遷移的趨勢(shì),這理當(dāng)如此。在lambda表達(dá)式和stream出現(xiàn)之前,執(zhí)行函數(shù)式任務(wù)是非常麻煩的,并且會(huì)導(dǎo)致代碼可讀性的嚴(yán)重下降。

Java開(kāi)發(fā)

3.Creating Indiscriminate Gettersand Setters(濫用getter和setter)

新手程序員學(xué)到的一件事是將與類相關(guān)的數(shù)據(jù)封裝在私有字段中,并通過(guò)公共方法暴露它們。在實(shí)際使用時(shí),通過(guò)創(chuàng)建getter來(lái)訪問(wèn)類的私有數(shù)據(jù),創(chuàng)建setter來(lái)修改類的私有數(shù)據(jù)。

雖然這對(duì)于新程序員來(lái)說(shuō)是一個(gè)很好的學(xué)習(xí)實(shí)踐,但這種做法不能未經(jīng)思索就應(yīng)用在中級(jí)或高級(jí)編程。在實(shí)際中通常發(fā)生的情況是,每個(gè)私有字段都有一對(duì)getter和setter將類的內(nèi)部?jī)?nèi)容暴露給外部實(shí)體。這會(huì)導(dǎo)致一些嚴(yán)重的問(wèn)題,特別是在私有字段是可變的情況下。這不僅是setter的問(wèn)題,甚至在只有g(shù)etter時(shí)也是如此。

我們創(chuàng)建的許多應(yīng)用程序最終都能正常工作,但是在大量應(yīng)用程序中,我們無(wú)意引入的一些問(wèn)題可能只會(huì)在最極端的情況下出現(xiàn)。在某些情況下,我們做事情是出于方便,甚至是出于習(xí)慣,而很少注意這些習(xí)慣在我們使用的場(chǎng)景中是否實(shí)用(或安全)。

收藏
分享到:

相關(guān)課程

相關(guān)資訊

東莞易思訓(xùn)教育

東莞易思訓(xùn)教育

認(rèn)證等級(jí)

信譽(yù)良好,可安心報(bào)讀

東莞易思訓(xùn)教育

已獲好學(xué)校V2信譽(yù)等級(jí)認(rèn)證

信譽(yù)值

  • (60-80)基礎(chǔ)信譽(yù)積累,可放心報(bào)讀
  • (81-90)良好信譽(yù)積累,可持續(xù)信賴
  • (91-100)充分信譽(yù)積累,推薦報(bào)讀

與好學(xué)校簽訂讀書(shū)保障協(xié)議:

  • 100%
  • 37
  • 1890
在線咨詢
;