Effective Java(第3版)第4章總結(jié)

第15條:使類和成員的可訪問性最小化

正確使用public、protected、private三個修飾符

第16條:要在公有類而非公有域中使用訪問方法

對象屬性應(yīng)該私有化,然后提供getter、setter方法。而不是公有化屬性,使用對象.屬性(obj.field)訪問

第17條:使可變性最小化

JDK中包含許多不可變的類(使用 final 修飾符),包含String、基本類型的包裝類。不可變對象本質(zhì)上是線程安全的,不要求同步

第18條:復(fù)合優(yōu)先于繼承

繼承需要清楚的知道父類的具體代碼邏輯,不然覆蓋方法可能會出現(xiàn)奇怪的BUG。而復(fù)合,是把父類作為成員變量,調(diào)用其方法即可

第19條:要么設(shè)計繼承并提供文檔說明,要么禁止繼承

參考第18條

第20條:接口優(yōu)先抽象類

一般都是面向接口編程,抽象類適合抽取子類的代碼作為公共代碼,子類只需要實現(xiàn)抽象方法即可

第21條:為后代設(shè)計接口

在接口里添加默認(rèn)方法,存在風(fēng)險,應(yīng)當(dāng)謹(jǐn)慎

第22條:接口只用于定義類型

現(xiàn)在一般都有專門的常量類,跟這條相違背。但是專門的常量類利于維護(hù)

第23條:類層次優(yōu)于標(biāo)簽類

沒在其他地方見過標(biāo)簽類的寫法,面向接口編程就可以避免這種情況

第24條:靜態(tài)成員類優(yōu)先于非靜態(tài)成員類

  • 非靜態(tài)成員類每個實例都持有一個外部對象的引用,保存這份引用需要消耗時間和空間
  • 靜態(tài)成員類是外部類的一個靜態(tài)成員,與外部類其他的靜態(tài)成員一樣,遵守同樣的可訪問性規(guī)則

第25條:限制源文件為單個頂級類

除了內(nèi)部類的情況,不要在一個文件中寫兩個及以上的類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容