Effective Java 31-45
這一段很多比較簡單,簡單羅列一下,部分重要的做了解釋三十一、如果要求精確的答案,盡量避免使用float 和double,這個(gè)可以參照我的一片文章
貨幣尤其不合適。可以使用BigDecimal代替
三十二、如果其它類型更適合,盡量避免使用字符串
1,字符串不能替代其它的值類型
2,字符串不適合代替枚舉類型
3,字符串不適合代替聚集類型
4,字符串也不是和代替能力表
因?yàn)橛行r(shí)候,使用字符串會(huì)大大降低性能
三十三、了解字符串連接的性能
說明:使用StringBuffer代替 +來連接字符串
三十四、通過接口來引用對(duì)象,這能讓你的程序更加靈活
三十五、接口優(yōu)先于反射。
使用反射會(huì)帶來很多問題,例如:
1,不能編譯期發(fā)現(xiàn)錯(cuò)誤
2,代碼混亂
3,調(diào)試?yán)щy
4,性能損失。
除非必須,否則不使用反射
三十六、謹(jǐn)慎的使用本地方法JNI
三十七、謹(jǐn)慎的進(jìn)行優(yōu)化,有三條優(yōu)化格言:
1,很多計(jì)算上的過失都被歸咎于效率原因(沒有獲得必要的效率),而不是其它的原因--甚至包括盲目的作傻事.?? ---William A.Wulf [Wulf72]
2,不要去計(jì)較一些小的效率上的得失,在97%的情況下,不成熟的優(yōu)化是一切問題的根源。
????????????------Donald E.Knuth[Knuth74]
3,在優(yōu)化方面要遵守兩個(gè)原則:
規(guī)則一:不要做優(yōu)化
規(guī)則二:還是不要做優(yōu)化--也就是說,在你還沒有絕對(duì)清晰的未優(yōu)化方案前,請(qǐng)不要優(yōu)化。
??????????? -----M.A.Jackson[Jackson75]
每次試圖做優(yōu)化之前和之后請(qǐng)對(duì)性能進(jìn)行測試
三十八:遵守普遍接受的命名規(guī)則
三十九:值針對(duì)不正常的條件才使用異常,也就是說不要在正常的情況下使用異常來控制流程,活著解決某些已知的問題。因?yàn)闀?huì)大量的損失性能
四十、對(duì)于可恢復(fù)的條件使用被檢查的異常,對(duì)于程序錯(cuò)誤使用運(yùn)行時(shí)異常
詳細(xì):Java提供了三種可拋出結(jié)構(gòu),checked Exception,? run-time exception , error
什么時(shí)候使用什么很容易讓人混淆,下邊是一個(gè)簡單的區(qū)分原則
1,如果期望調(diào)用者能夠恢復(fù),那么對(duì)于這樣的條件應(yīng)該使用被檢查異常
2,你所實(shí)現(xiàn)的所有未檢查的拋出結(jié)構(gòu)都是run time exception ,而不是Error
四十一:避免不必要的使用被檢查異常
四十二:盡可能的使用標(biāo)準(zhǔn)異常,例如IllegalArgumentException ,NullPointerException ,IndexOutOfBoundsException等等
四十三:拋出異常要適合于相應(yīng)的抽象。
高層實(shí)現(xiàn)應(yīng)該捕獲異常,同時(shí)拋出一個(gè)可以按照高層抽象解釋的異常(業(yè)務(wù)邏輯上符合高層邏輯),這種做法叫做異常轉(zhuǎn)譯
四十四:每個(gè)方法拋出的異常都應(yīng)改有文檔
四十五:在細(xì)節(jié)消息中包含失敗-捕獲信息
詳細(xì):在異常字符串中應(yīng)包含有用的信息,例如IndexOutOfBoundsException異常的細(xì)節(jié)消息應(yīng)該包括下界、上界以及沒有落在其中的實(shí)際下標(biāo)
posted on 2007-02-11 01:32 dreamstone 閱讀(1542) 評(píng)論(0) 編輯 收藏 所屬分類: jdk相關(guān)