java78条注意事项
這78條來(lái)源于《Effective Java》一書(shū),因中文版翻譯得實(shí)在難道,我就只留了個(gè)目錄。
創(chuàng)建和銷(xiāo)毀對(duì)象
第1條:考慮用靜態(tài)工廠方法代替構(gòu)造器
第2條:遇到多個(gè)構(gòu)造器參數(shù)時(shí)要考慮用構(gòu)建器
第3條:用私有構(gòu)造器或者枚舉類(lèi)型強(qiáng)化Singleton屬性
第4條:通過(guò)私有構(gòu)造器強(qiáng)化不可實(shí)例化的能力
第5條:避免創(chuàng)建不必要的對(duì)象
第6條:消除過(guò)期的對(duì)象引用
第7條:避免使用終結(jié)函數(shù)
對(duì)于所有對(duì)象都通用的方法
第8條:改寫(xiě)equals時(shí)請(qǐng)遵守通用約定
第9條:改寫(xiě)equals時(shí)總要改寫(xiě)hashCode
第10條:始終要改寫(xiě)toString
第11條:謹(jǐn)慎地改寫(xiě)clone
第12條:考慮實(shí)現(xiàn)Comparable接口
類(lèi)和接口
第13條:使類(lèi)和成員的可訪(fǎng)問(wèn)性最小化
第14條:在公有類(lèi)中使用訪(fǎng)問(wèn)方法而非公有域
第15條:使非可變性最小化
第16條:復(fù)合優(yōu)先于繼承
第17條:要么為繼承而設(shè)計(jì),并提供文檔說(shuō)明,要么就禁止繼承
第18條:接口優(yōu)于抽象類(lèi)
第19條:接口只用于定義類(lèi)型
第20條:類(lèi)層次優(yōu)于標(biāo)簽類(lèi)
第21條:用函數(shù)對(duì)象表示策略
第22條:優(yōu)先考慮靜態(tài)成員類(lèi)
泛型
第23條:請(qǐng)不要在新代碼中使用原生態(tài)類(lèi)型
第24條:消除非受檢警告
第25條:列表優(yōu)先于數(shù)組
第26條:優(yōu)先考慮泛型
第27條:優(yōu)先考慮泛型方法
第28條:利用有限制通配符來(lái)提升API的靈活性
第29條:優(yōu)先考慮類(lèi)型安全的異構(gòu)容器
枚舉和注解
第30條:用enum代替int常量
第31條:用實(shí)例域代替序數(shù)
第32條:用EnumSet代替位域
第33條:用EnumMap代替序數(shù)索引
第34條:用接口模擬可伸縮的枚舉
第35條:注解優(yōu)先于命名模式
第36條:堅(jiān)持使用Override注解
第37條:用標(biāo)記接口定義類(lèi)型
方法
第38條:檢查參數(shù)的有效性
第39條:必要時(shí)進(jìn)行保護(hù)性拷貝
第40條:謹(jǐn)慎設(shè)計(jì)方法簽名
第41條:慎用重載
第42條:慎用可變參數(shù)(varargs)
第43條:返回零長(zhǎng)度的數(shù)組或者集合,而不是null
第44條:為所有導(dǎo)出的API元素編寫(xiě)文檔注釋
通用程序設(shè)計(jì)
第45條:將局部變量的作用域最小化
第46條:for-each循環(huán)優(yōu)先于傳統(tǒng)的for循環(huán)
第47條:了解和使用類(lèi)庫(kù)
第48條:如果需要精確的答案,請(qǐng)避免使用float和double
第49條:原語(yǔ)類(lèi)型優(yōu)先于裝箱的原語(yǔ)類(lèi)型
第50條:如果其他類(lèi)型更適合,則盡量避免使用字符串
第51條:了解字符串連接的性能
第52條:通過(guò)接口引用對(duì)象
第53條:接口優(yōu)先于反射機(jī)制
第54條:謹(jǐn)慎地使用本地方法
第55條:謹(jǐn)慎地進(jìn)行優(yōu)化
第56條:遵守普遍接受的命名慣例
異常
第57條:只針對(duì)異常的條件才使用異常
第58條:對(duì)可恢復(fù)的條件使用受檢異常,對(duì)編程錯(cuò)誤使用運(yùn)行時(shí)異常
第59條:避免不必要地使用受檢的異常
第60條:盡量使用標(biāo)準(zhǔn)的異常
第61條:拋出與抽象相對(duì)應(yīng)的異常
第62條:每個(gè)方法拋出的所有異常都要有文檔
第63條:在細(xì)節(jié)消息中包含失敗-捕獲信息
第64條:努力使失敗保持原子性
第65條:不要忽略異常
并發(fā)
第66條:同步訪(fǎng)問(wèn)共享的可變數(shù)據(jù)
第67條:避免過(guò)多同步
第68條:executor和task優(yōu)先于線(xiàn)程
第69條:并發(fā)工具優(yōu)先于wait和notify
第70條:線(xiàn)程安全性的文檔化
第71條:慎用延遲初始化
第72條:不要依賴(lài)于線(xiàn)程調(diào)度器
第73條:避免使用線(xiàn)程組
序列化
第74條:謹(jǐn)慎地實(shí)現(xiàn)Serializable
第75條:考慮使用自定義的序列化形式
第76條:保護(hù)性地編寫(xiě)readObject方法
第77條:對(duì)于實(shí)例控制,枚舉類(lèi)型優(yōu)先于readResolve
第78條:考慮用序列化代理代替序列化實(shí)例
總結(jié)
以上是生活随笔為你收集整理的java78条注意事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springMVC的@RequestPa
- 下一篇: redis知识