閱讀經(jīng)典——《Effective Java》

本書的目標(biāo)是幫助讀者最有效地使用Java程序設(shè)計(jì)語(yǔ)言及其基本類庫(kù):java.lang、java.util,在某種程度上還包括java.util.concurrent和java.io。

前言

作為“Java四大名著”之一,《Effective Java》出版以來(lái)廣受好評(píng)。針對(duì)如何編寫高效、設(shè)計(jì)優(yōu)良的程序提出了最實(shí)用、最權(quán)威的指導(dǎo)方針。這本書不是針對(duì)初學(xué)者的,讀者至少應(yīng)該熟悉Java程序設(shè)計(jì)語(yǔ)言。如果你已經(jīng)是一名有經(jīng)驗(yàn)的開發(fā)者,而且想更深入了解Java,那么,請(qǐng)你跟我一起讀下去。

在本文集中,我將把閱讀《Effective Java》的心得體會(huì)分享給大家,不定期發(fā)布文章,歡迎廣大Java愛(ài)好者前來(lái)閱讀。

版本

以機(jī)械工業(yè)出版社出版的《Effective Java中文版第二版》為準(zhǔn)。

Effective Java中文版封面

本書目錄

雖然本文集并不會(huì)覆蓋書中所有內(nèi)容,但列出目錄可以給我們一個(gè)整體的認(rèn)識(shí)。

第1章 引言
第2章 創(chuàng)建和銷毀對(duì)象

第1條 考慮用靜態(tài)工廠方法代替構(gòu)造器
第2條 遇到多個(gè)構(gòu)造器參數(shù)時(shí)要考慮用構(gòu)建器
第3條 用私有構(gòu)造器或者枚舉類型強(qiáng)化Singleton屬性
第4條 通過(guò)私有構(gòu)造器強(qiáng)化不可實(shí)例化的能力
第5條 避免創(chuàng)建不必要的對(duì)象
第6條 消除過(guò)期的對(duì)象引用
第7條 避免使用終結(jié)方法

第3章 對(duì)于所有對(duì)象都通用的方法

第8條 覆蓋equals時(shí)請(qǐng)遵守通用約定
第9條 覆蓋equals時(shí)總要覆蓋hashCode
第10條 始終要覆蓋toString
第11條 謹(jǐn)慎地覆蓋clone
第12條 考慮實(shí)現(xiàn)Comparable接口

第4章 類和接口

第13條 使類和成員的可訪問(wèn)性最小化
第14條 在公有類中使用訪問(wèn)方法而非公有域
第15條 使可變性最小化
第16條 復(fù)合優(yōu)先于繼承
第17條 要么為繼承而設(shè)計(jì),并提供文檔說(shuō)明,要么就禁止繼承
第18條 接口優(yōu)于抽象類
第19條 接口只用于定義類型
第20條 類層次優(yōu)于標(biāo)簽類
第21條 用函數(shù)對(duì)象表示策略
第22條 優(yōu)先考慮靜態(tài)成員類

第5章 泛型

第23條 請(qǐng)不要在新代碼中使用原生態(tài)類型
第24條 消除非受檢警告
第25條 列表優(yōu)先于數(shù)組
第26條 優(yōu)先考慮泛型
第27條 優(yōu)先考慮泛型方法
第28條 利用有限制通配符來(lái)提升API的靈活性
第29條 優(yōu)先考慮類型安全的異構(gòu)容器

第6章 枚舉和注解

第30條 用enum代替int常量
第31條 用實(shí)例域代替序數(shù)
第32條 用EnumSet代替位域
第33條 用EnumMap代替序數(shù)索引
第34條 用接口模擬可伸縮的枚舉
第35條 注解優(yōu)先于命名模式
第36條 堅(jiān)持使用Override注解
第37條 用標(biāo)記接口定義類型

第7章 方法

第38條 檢查參數(shù)的有效性
第39條 必要時(shí)進(jìn)行保護(hù)性拷貝
第40條 謹(jǐn)慎設(shè)計(jì)方法簽名
第41條 慎用重載
第42條 慎用可變參數(shù)
第43條 返回零長(zhǎng)度的數(shù)組或者集合,而不是null
第44條 為所有導(dǎo)出的API元素編寫文檔注釋

第8章 通用程序設(shè)計(jì)

第45條 將局部變量的作用域最小化
第46條 for-each循環(huán)優(yōu)先于傳統(tǒng)的for循環(huán)
第47條 了解和使用類庫(kù)
第48條 如果需要精確的答案,請(qǐng)避免使用float和double
第49條 基本類型優(yōu)先于裝箱基本類型
第50條 如果其他類型更適合,則盡量避免使用字符串
第51條 當(dāng)心字符串連接的性能
第52條 通過(guò)接口引用對(duì)象
第53條 接口優(yōu)先于反射機(jī)制
第54條 謹(jǐn)慎地使用本地方法
第55條 謹(jǐn)慎地進(jìn)行優(yōu)化
第56條 遵守普遍接受的命名慣例

第9章 異常

第57條 只針對(duì)異常的情況才使用異常
第58條 對(duì)可恢復(fù)的情況使用受檢異常,對(duì)編程錯(cuò)誤使用運(yùn)行時(shí)異常
第59條 避免不必要地使用受檢的異常
第60條 優(yōu)先使用標(biāo)準(zhǔn)的異常
第61條 拋出與抽象相對(duì)應(yīng)的異常
第62條 每個(gè)方法拋出的異常都要有文檔
第63條 在細(xì)節(jié)消息中包含能捕獲失敗的信息
第64條 努力使失敗保持原子性
第65條 不要忽略異常

第10章 并發(fā)

第66條 同步訪問(wèn)共享的可變數(shù)據(jù)
第67條 避免過(guò)度同步
第68條 executor和task優(yōu)先于線程
第69條 并發(fā)工具優(yōu)先于wait和notify
第70條 線程安全性的文檔化
第71條 慎用延遲初始化
第72條 不要依賴于線程調(diào)度器
第73條 避免使用線程組

第11章 序列化

第74條 謹(jǐn)慎地實(shí)現(xiàn)Serializable接口
第75條 考慮使用自定義的序列化形式
第76條 保護(hù)性地編寫readObject方法
第77條 對(duì)于實(shí)例控制,枚舉類型優(yōu)先于readResolve
第78條 考慮用序列化代理代替序列化實(shí)例

現(xiàn)在,就讓我們開始閱讀吧!

關(guān)注作者文集《Effective Java》,第一時(shí)間獲取最新發(fā)布文章。

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

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,741評(píng)論 25 709
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,623評(píng)論 18 399
  • 偶一日來(lái)簡(jiǎn)書看看,無(wú)意看到了美人說(shuō)征稿的活動(dòng),想想自己平時(shí)也是很樂(lè)于觀察生活中的點(diǎn)點(diǎn)滴滴的,對(duì)于個(gè)人穿著形象提升這...
    M曼君閱讀 636評(píng)論 0 5
  • 雨中登泰山閱讀 477評(píng)論 0 0

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