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