-
Effective Java 中文第三版
- 1. 考慮使用靜態工廠方法替代構造方法
- 2. 當構造方法參數過多時使用 builder 模式
- 3. 使用私有構造方法或枚類實現 Singleton 屬性
- 4. 使用私有構造器執行非實例化
- 5. 依賴注入優於硬連接資源(hardwiring resources)
- 6. 避免創建不必要的對象
- 7. 消除過期的對象引用
- 8. 避免使用 Finalizer 和 Cleaner 機制
- 9. 使用 try-with-resources 語句替代 try-finally 語句
- 10. 重寫 equals 方法時遵守通用約定
- 11. 重寫 equals 方法時同時也要重寫 hashcode 方法
- 12. 始終重寫 toString 方法
- 13. 謹慎地重寫 clone 方法
- 14. 考慮實現 Comparable 接口
- 15. 使類和成員的可訪問性最小化
- 16. 在公共類中使用訪問方法而不是公共屬性
- 17. 最小化可變性
- 18. 組合優於繼承
- 19. 要麼設計繼承並提供文檔說明,要麼禁用繼承
- 20. 接口優於抽象類
- 21. 爲後代設計接口
- 22. 接口僅用來定義類型
- 23. 類層次結構優於標籤類
- 24. 支持使用靜態成員類而不是非靜態類
- 25. 將源文件限制爲單個頂級類
- 26. 不要使用原始類型
- 27. 消除非檢查警告
- 28. 列表優於數組
- 29. 優先考慮泛型
- 30. 優先使用泛型方法
- 31. 使用限定通配符來增加 API 的靈活性
- 32. 合理地結合泛型和可變參數
- 33. 優先考慮類型安全的異構容器
- 34. 使用枚舉類型替代整型常量
- 35. 使用實例屬性替代序數
- 36. 使用 EnumSet 替代位屬性
- 37. 使用 EnumMap 替代序數索引
- 38. 使用接口模擬可擴展的枚舉
- 39. 註解優於命名模式
- 40. 始終使用 Override 註解
- 41. 使用標記接口定義類型
- 42. lambda 表達式優於匿名類
- 43. 方法引用優於 lambda 表達式
- 44. 優先使用標準的函數式接口
- 45. 明智審慎地使用 Stream
- 46. 優先考慮流中無副作用的函數
- 47. 優先使用 Collection 而不是 Stream 來作爲方法的返回類型
- 48. 謹慎使用流並行
- 49. 檢查參數有效性
- 50. 必要時進行防禦性拷貝
- 51. 仔細設計方法簽名
- 52. 明智審慎地使用重載
- 53. 明智審慎地使用可變參數
- 54. 返回空的數組或集合,不要返回 null
- 55. 明智審慎地返回 Optional
- 56. 爲所有已公開的 API 元素編寫文檔註釋
- 57. 最小化局部變量的作用域
- 58. for-each 循環優於傳統 for 循環
- 59. 瞭解並使用庫
- 60. 若需要精確答案就應避免使用 float 和 double 類型
- 61. 基本數據類型優於包裝類
- 62. 當使用其他類型更合適時應避免使用字符串
- 63. 當心字符串連接引起的性能問題
- 64. 通過接口引用對象
- 65. 接口優於反射
- 66. 明智審慎地本地方法
- 67. 明智審慎地進行優化
- 68. 遵守被廣泛認可的命名約定
- 69. 只針對異常的情況下才使用異常
- 70. 對可恢復的情況使用受檢異常,對編程錯誤使用運行時異常
- 71. 避免不必要的使用受檢異常
- 72. 優先使用標準的異常
- 73. 拋出與抽象對應的異常
- 74. 每個方法拋出的異常都需要創建文檔
- 75. 在細節消息中包含失敗一捕獲信息
- 76. 保持失敗原子性
- 77. 不要忽略異常
- 78. 同步訪問共享的可變數據
- 79. 避免過度同步
- 80. executor 、task 和 stream 優先於線程
- 81. 併發工具優於 wait 和 notify
- 82. 文檔應包含線程安全屬性
- 83. 明智審慎的使用延遲初始化
- 84. 不要依賴線程調度器
- 85. 優先選擇 Java 序列化的替代方案
- 86. 非常謹慎地實現 Serializable
- 87. 考慮使用自定義的序列化形式
- 88. 保護性的編寫 readObject 方法
- 89. 對於實例控制,枚舉類型優於 readResolve
- 90. 考慮用序列化代理代替序列化實例
- Thinking in Java (Java 編程思想)
- Java 8 簡明教程
- Java 設計模式最佳實踐
- Java 編程問題
- Java 項目大全
- Java 12 編程學習手冊
- 精通 Java 11
- Java 自動化測試初學者實用指南
- Java9 高性能應用
- Java11 祕籍
- 精通 JUnit5 軟件測試
- Java 測試驅動開發
- Java 雲原生應用
- Java 代碼面試完全指南
- Java 基礎知識
- JavaFX 基礎知識
- Java 編程入門
- Java7 併發祕籍
- Java9 和 JShell
- 面向初學者的 Java 編程
- 精通 Java8 併發編程
- Java7 新特性祕籍
- Java9 編程藍圖
- Java SE7 編程學習指南
- Java Lambda 學習指南
- Java 網絡編程學習指南
- Java8 反應式編程學習指南
下載
Docker
docker pull apachecn0/apachecn-java-zh
docker run -tid -p <port>:80 apachecn0/apachecn-java-zh
# 訪問 http://localhost:{port}
PYPI
pip install apachecn-java-zh
apachecn-java-zh <port>
# 訪問 http://localhost:{port}
NPM
npm install -g apachecn-java-zh
apachecn-java-zh <port>
# 訪問 http://localhost:{port}
貢獻指南
本項目需要校對,歡迎大家提交 Pull Request。
請您勇敢地去翻譯和改進翻譯。雖然我們追求卓越,但我們並不要求您做到十全十美,因此請不要擔心因爲翻譯上犯錯——在大部分情況下,我們的服務器已經記錄所有的翻譯,因此您不必擔心會因爲您的失誤遭到無法挽回的破壞。(改編自維基百科)
組織介紹
贊助我們
通過平臺自帶的打賞功能,或點擊這裏。