Effective Java 中文第二版

2021-06-17 17:53:44 字數 2132 閱讀 4050

第2章:建立和銷毀物件

第1條:考慮用靜態工廠方法代替構造器

第2條:遇到多個構造器引數時要考慮用構建器

第3條:用私有構造器或者列舉型別強化singleton屬性

第4條:通過私有構造器強化不可例項化的能力

第5條:避免建立不必要的物件

第6條:消除過期的物件引用

第7條:避免使用終結方法

第3章對於所有物件都通用的方法

第8條:覆蓋equals時請遵守通用約定

第9條:覆蓋equals時總要覆蓋hashcode

第10條:始終要覆蓋tostring

第11條:謹慎地覆蓋clone

第12條:考慮實現comparable介面

第4章類和介面

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

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

第15條:使可變性最小化

第16條:復合優先於繼承

第17條:要麼為繼承而設計,並提供文件說明,要麼就禁止繼承

第18條:介面優於抽象類

第19條:介面只用於定義型別

第20條:類層次優於標籤類

第21條:用函式物件表示策略

第22條:優先考慮靜態成員類

第5章泛型

第23條:請不要在新**中使用原生態型別

第24條:消除非受檢警告

第25條:列表優先於陣列

第26條:優先考慮泛型

第27條:優先考慮泛型方法

第28條:利用有限制萬用字元來提公升api的靈活性

第29條:優先考慮型別安全的異構容器

第6章列舉和註解

第30條:用enum代替int常量

第31條:用例項域代替序數

第32條:用enumset代替位域

第33條:用enummap代替序數索引

第34條:用介面模擬可伸縮的列舉

第35條:註解優先於命名模式

第36條:堅持使用override註解

第37條:用標記介面定義型別

第7章方法

第38條:檢查引數的有效性

第39條:必要時進行保護性拷貝

第40條:謹慎設計方法簽名

第41條:慎用過載

第42條:慎用可變引數

第43條:返回零長度的陣列或者集合,而不是:null

第44條:為所有匯出的api元素編寫文件注釋

第8章通用程式設計

第45條:將區域性變數的作用域最小化

第46條:for-each迴圈優先於傳統的for迴圈

第47條:了解和使用類庫

第48條:如果需要精確的答案,請避免使用float和double

第49條:基本型別優先於裝箱基本型別

第50條:如果其他型別更適合,則盡量避免使用字串

第51條:當心字串連線的效能

第52條:通過介面引用物件

第53條:介面優先於反射機制

第54條:謹慎地使用本地方法

第55條:謹慎地進行優化

第56條:遵守普遍接受的命名慣例

第9章異常

第57條:只針對異常的情況才使用異常

第58條:對可恢復的情況使用受檢異常,對程式設計錯誤使用執行時異常

第59條:避免不必要地使用受檢的異常

第60條:優先使用標準的異常

第61條:丟擲與抽象相對應的異常

第62條:每個方法丟擲的異常都要有文件

第63條:在細節訊息中包含能捕獲失敗的資訊

第64條:努力使失敗保持原子性

第65條:不要忽略異常

第10章併發

第66條:同步訪問共享的可變資料

第67條:避免過度同步

第68條:executor和task優先幹線程

第69條:併發工具優先於wait和notify

第70條:執行緒安全性的文件化

第71條:慎用延遲初始化

第72條:不要依賴於執行緒排程器

第73條:避免使用執行緒組

第11章序列化

第74條:謹慎地實現serializable介面

第75條:考慮使用自定義的序列化形式

第76條:保護性地編寫readobject方法

第77條:對於例項控制,列舉型別優先於readresolve

第78條:考慮用序列化**代替序列化例項

讀《Effective java 中文版》(19)

第18條 優先考慮靜態成員類 巢狀類 nested class 是指被定義在另一類的內部的類,它只為它的外圍類服務。如果乙個巢狀類可能會用於其它的某個環境,那就應為乙個頂層類 top level class 巢狀類有四種 靜態成員類 static member class 非靜態成員類 nonsta...

Effective Java 中文第二版

第2章 建立和銷毀物件 第1條 考慮用靜態工廠方法代替構造器 第2條 遇到多個構造器引數時要考慮用構建器 第3條 用私有構造器或者列舉型別強化singleton屬性 第4條 通過私有構造器強化不可例項化的能力 第5條 避免建立不必要的物件 第6條 消除過期的物件引用 第7條 避免使用終結方法 第3章...

《effective Java》讀後筆記

為什麼區域性變數要宣告為 final 在jdk 1.8 之前,不用final修飾會編譯報錯。在jdk 1.8 中,不用final修飾不會報錯,但是一旦改變了變數的值就會報錯 區域性類如果乙個內部類需要在多個方法之外仍然是可見的,或者是它太長了,不適合於放在方法內部,就應該使用成員類。如果成員類的每個...