The Effective Java 心得筆記

Alt text

第二章 物件的創造跟銷毀

Item1 - 靜態工廠方法

Item2 - 建造者模式

Item3 - 用Enum實作Singleton

Item4 - 透過私有構造器來禁止實例化

Item5 - 依賴注入優於硬連接資源

Item6 - 避免創建不必要的對象

Item7 - 消除過期的對象引用

第三章 對於所有對象都通用的方法

Item10 - 覆蓋equals請遵守通用規範

Item11 - 覆蓋equals時總要覆蓋hashCode

Item12 - 始終要覆蓋toString

第四章 類和接口

Item15 - 使類和成員的可訪問性最小化

Item16 - 在公有類中使用訪問方法而非公有域

Item17 - 使可變性最小化

Item18 - 復合優先於繼承

Item24 - 優先考慮靜態成員類

Item25 - 讓每個java文件只有一個top-level類別

第五章 泛型

泛型篇章簡介及術語列表

Item26 - 不要使用原始類型

Item27 - 消除非檢查警告

Item28 - 列表優於數組

Item29 - 優先考慮泛型

Item30 - 優先考慮泛型方法

Item31 - 利用限制通配符來提昇API靈活性

到底 <T extends Comparable<? super T»是什麼意思

類型參數和通配符的選擇

第六章 枚舉和註解

第七章 Lambda和Stream

Item42 - lambda表達式優於匿名類

Item43 - 方法引用優於lambda表達式

Item44 - 優先使用標準的函數式接口

Item45 - 謹慎的使用Stream

Item46 - 優先考慮在流的中間操作中使用無副作用的方法

Item47 - 優先使用Collection而不是Stream來作為函數的回傳類型

Item48 - 謹慎使用並行Stream

第八章 方法

Item49 - 檢查參數的有效性

Item50 - 必要時進行保護型拷貝

Item51 - 謹慎的設計方法簽名

Item52 - 慎用重載

Item53 - 慎用可變參數

Item54 - 返回零長度的數組或集合 而不是null

Item56 - 為所有導出的API元素編寫文檔註釋

第九章 通用程序設計

Item57 - 將局部變量的作用域最小化

Item58 - For-each 優先於傳統的for或while

Item64 - 通過接口引用對象

Item66 - 謹慎的使用本地方法

Item67 - 謹慎地進行優化

Item68 - 遵守普遍接受的命名慣例

第十章 異常

Item69 - 只針對異常的情況才使用異常

Item70 - 對可恢復的情況使用受檢異常 對編程錯誤使用運行時異常

Item71 - 避免不必要的使用受檢異常

Item72 - 優先使用標準的異常

Item73 - 拋出與抽象相對應的異常

Item74 - 每個拋出來的異常都要有文檔

Item75 - 在細節消息中包含能捕獲失敗的訊息

Item76 - 使失敗保持原子性

Item77 - 不要忽略異常

第十一章 併發

第十二章 序列化

Effective Java - 序列化

Item86 - 謹慎實現Serializable介面

Item87 - 考慮使用自己定義的序列化

深入解析序列化byte stream

Item88 - 保護性的編寫readObject方法

Item89 - 用Enum實現物件控制

Item90 - 考慮用序列化代理代替序列化實例