創(chuàng)建和銷毀對象
第1條:考慮用靜態(tài)工廠方法代替構(gòu)造函數(shù)
第2條:使用私有構(gòu)造函數(shù)強(qiáng)化singletonc屬性
第3條:通過私有構(gòu)造函數(shù)強(qiáng)化不可實(shí)例化c的能力
第4條:避免創(chuàng)建重復(fù)的對象
第5條:消除過期的對象引用
第6條:避免使用終結(jié)函數(shù)
對于所有對象都通用的方法
第7條:在改寫equals的時候請遵守通用c約定
第8條:改寫equals時總是要改寫hashCode
第9條:總是要改寫toString
第10條:謹(jǐn)慎地改寫clone
第11條:考慮實(shí)現(xiàn)Comparable接口
類和接口
第12條:使類和成員的可訪問能力最小化
第13條:支持非可變性
第14條:復(fù)合優(yōu)先于繼承
第15條:要么專門為繼承而設(shè)計(jì),1并給出c文檔說明,1要么禁止繼承
第16條:接口優(yōu)于抽象類
第17條:接口只是被用于定義類型
第18條:優(yōu)先考慮靜態(tài)成員類
C語言結(jié)構(gòu)的替代
第19條:用類代替結(jié)構(gòu)
第20條:用類層次來代替聯(lián)合
第21條:用類來代替enum結(jié)構(gòu)
第22條:用類和接口來代替函數(shù)指針
方法
第23條:檢查參數(shù)的有效性
第24條:需要時使用保護(hù)性拷貝
第25條:謹(jǐn)慎設(shè)計(jì)方法的原型
第26條:謹(jǐn)慎地使用重載
第27條:返回零長度的數(shù)組而不是null
第28條:為所有導(dǎo)出的API元素編寫c文檔注釋
通用程序設(shè)計(jì)
第29條:將局部變量的作用域最小化
第30條:了解和使用庫
第31條:如果要求精確的答案,1請避免c使用float和double
第32條:如果其他類型更適合,1則盡量避免c使用字符串
第33條:了解字符串連接的性能
第34條:通過接口引用對象
第35條:接口優(yōu)先于映像機(jī)制
第36條:謹(jǐn)慎地使用本地方法
第37條:謹(jǐn)慎地進(jìn)行優(yōu)化
第38條:遵守普遍接受的命名慣例
異常
第39條:只針對不正常的條件才使用異常
第40條:對于可恢復(fù)的條件使用被檢查的c異常,1對于程序錯誤使用運(yùn)行時c異常
第41條:避免不必要地使用被檢查的異常
第42條:盡量使用標(biāo)準(zhǔn)的異常
第43條:拋出的異常要適合于相應(yīng)的抽象
第44條:每個方法拋出的異常都要有文檔
第45條:在細(xì)節(jié)消息中包含失敗-捕獲信息
第46條:努力使失敗保持原子性
第47條:不要忽略異常
線程
第48條:對共享可變數(shù)據(jù)的同步訪問
第49條:避免過多的同步
第50條:永遠(yuǎn)不要在循環(huán)的外面調(diào)用wait
第51條:不要依賴于線程調(diào)度器
第52條:線程安全性的文檔化
第53條:避免使用線程組
序列化
第54條:謹(jǐn)慎地實(shí)現(xiàn)Serializable
第55條:考慮使用自定義的序列化形式
第56條:保護(hù)性地編寫readObject方法
第57條:必要時提供一個readResolve方法