Effective Java 3rd(Java高效編程)技術要點

從本章開始,後續啟動 《Java高效編程 第三版(Effective Java 3rd)》各章節的核心技術要點。

關注頭條號“編程家園”,後續陸續會有更多技術領域(包括並不限於Android進階、Kotlin、網絡、Flutter、Python等),以及架構、職業規劃、職業思考等方面資料的免費分享,期待您的關注!

最新大綱如下:

Chapter 2. Creating and Destroying Objects

  • 01. 考慮使用靜態工廠方法替代構造方法
  • 02. 當構造方法參數過多時使用builder模式
  • 03. 使用私有構造方法或枚類實現Singleton屬性
  • 04. 使用私有構造方法執行非實例化
  • 05. 依賴注入優於硬連接資源(hardwiring resources)
  • 06. 避免創建不必要的對象
  • 07. 消除過期的對象引用
  • 08. 避免使用Finalizer和Cleaner機制
  • 09. 使用try-with-resources語句替代try-finally語句

Chapter 3. Methods Common to All Objects

  • 10. 重寫equals方法時遵守通用約定
  • 11. 重寫equals方法時同時也要重寫hashcode方法
  • 12. 始終重寫 toString 方法
  • 13. 謹慎地重寫 clone 方法
  • 14. 考慮實現Comparable接口

Chapter 4. Classes and Interfaces

  • 15. 使類和成員的可訪問性最小化
  • 16. 在公共類中使用訪問方法而不是公共屬性
  • 17. 最小化可變性
  • 18. 組合優於繼承
  • 19. 要麼設計繼承並提供文檔說明,要麼禁用繼承
  • 20. 接口優於抽象類
  • 21. 為後代設計接口
  • 22. 接口僅用來定義類型
  • 23. 類層次結構優於標籤類
  • 24. 支持使用靜態成員類而不是非靜態類
  • 25. 將源文件限制為單個頂級類

Chapter 5. Generics

  • 26. 不要使用原始類型
  • 27. 消除非檢查警告
  • 28. 列表優於數組
  • 29. 優先考慮泛型
  • 30. 優先使用泛型方法
  • 31. 使用限定通配符來增加API的靈活性
  • 32. 合理地結合泛型和可變參數
  • 33. 優先考慮類型安全的異構容器

Chapter 6. Enums and Annotations

  • 34. 使用枚舉類型替代整型常量
  • 35. 使用實例屬性替代序數
  • 36. 使用EnumSet替代位屬性
  • 37. 使用EnumMap替代序數索引
  • 38. 使用接口模擬可擴展的枚舉
  • 39. 註解優於命名模式
  • 40. 始終使用Override註解
  • 41. 使用標記接口定義類型

Chapter 7. Lambdas and Streams

  • 42. lambda表達式優於匿名類
  • 43. 方法引用優於lambda表達式
  • 44. 優先使用標準的函數式接口
  • 45. 明智審慎地使用Stream
  • 46. 優先考慮流中無副作用的函數
  • 47. 優先使用Collection而不是Stream來作為方法的返回類型
  • 48. 謹慎使用流並行

Chapter 8. Methods

  • 49. 檢查參數有效性
  • 50. 必要時進行防禦性拷貝
  • 51. 仔細設計方法簽名
  • 52. 明智審慎地使用重載
  • 53. 明智審慎地使用可變參數
  • 54. 返回空的數組或集合,不要返回 null
  • 55. 明智審慎地返回 Optional
  • 56. 為所有已公開的 API 元素編寫文檔註釋

Chapter 9. General Programming

  • 57. 最小化局部變量的作用域
  • 58. for-each 循環優於傳統 for 循環
  • 59. 瞭解並使用庫
  • 60. 若需要精確答案就應避免使用 float 和 double 類型
  • 61. 基本數據類型優於包裝類
  • 62. 當使用其他類型更合適時應避免使用字符串
  • 63. 當心字符串連接引起的性能問題
  • 64. 通過接口引用對象
  • 65. 接口優於反射
  • 66. 明智審慎地本地方法
  • 67. 明智審慎地進行優化
  • 68. 遵守被廣泛認可的命名約定

Chapter 10. Exceptions

  • 69. 只針對異常的情況下才使用異常
  • 70. 對可恢復的情況使用受檢異常,對編程錯誤使用運行時異常
  • 71. 避免不必要的使用受檢異常
  • 72. 優先使用標準的異常
  • 73. 拋出與抽象對應的異常
  • 74. 每個方法拋出的異常都需要創建文檔
  • 75. 在細節消息中包含失敗一捕獲信息
  • 76. 保持失敗原子性
  • 77. 不要忽略異常

Chapter 11. Concurrency

  • 78. 同步訪問共享的可變數據
  • 79. 避免過度同步
  • 80. executor 、task 和 stream 優先於線程
  • 81. 併發工具優於 wait 和 notify
  • 82. 文檔應包含線程安全屬性
  • 83. 明智審慎的使用延遲初始化
  • 84. 不要依賴線程調度器

Chapter 12. Serialization

  • 85. 優先選擇 Java 序列化的替代方案
  • 86. 非常謹慎地實現 Serializable
  • 87. 考慮使用自定義的序列化形式
  • 88. 保護性的編寫 readObject 方法
  • 89. 對於實例控制,枚舉類型優於 readResolve
  • 90. 考慮用序列化代理代替序列化實例
Effective Java 3rd(Java高效編程)技術要點


分享到:


相關文章: