effective java 讀書筆記---第8章 通用程序設計

45.將局部變量的作用域最小化
每一個局部變量幾乎都需要一個初始化表達式
for 循環優先於 while 循環

46. for each 循環優先於傳統的 for 循環

47.瞭解和使用類庫
java.util java.lang java.io

48.如果需要精確計算,不要使用 float 與 double
float 與 double 尤其不適合於貨幣計算
如果數值範圍不超過9位使用 int 不超過18位使用 long 否則使用 Bigdecimal

49.基本類型優先於封裝類型
自動封裝減少了使用封裝類型的繁瑣操作,但並沒有減少它的風險,封裝類型需要注意 null 異常

50.如果其他類型更加適合,避免使用字符串
字符串不適合代替其他類型
字符串不適合代替枚舉類型
字符串不適合代替聚集類型
字符串不適合代替能力表

51.當心字符串連接的性能
爲連接 n 個字符串而重複使用字符串連接操作符,需要n 的平方級的時間,這是由於字符串不可變,當兩個字符串放在一起時,它們的內容都需要拷貝,請使用 StringBuilder 來代替 String

52.通過接口引用對象
使用接口作爲類型的習慣,程序會更加靈活
如果沒有合適的接口,完全可以用類而不是接口來引用對象

53.接口優先於反射機制
java.lang.reflect 提供了通過程序來訪問關於已轉載類的信息的能力
但使用反射 喪失了編譯時類型檢查的好處 執行反射的代碼非常笨拙 損失性能
通常普通方法在運行時不應該以反射方式訪問對象
如果以有限形式使用反射機制,雖然夜壺付出代價,但是可以獲取許多好處

54.謹慎的使用本地方法
使用本地方法來提高性能的方法不值得提倡

55.謹慎的進行優化
要努力編寫好的程序而不是快的程序
好的程序體現了信息隱藏的原則
努力避免那些限制性能的設計決策
要考慮api 設計決策的性能後果
爲獲取好的性能對api 進行包裝,這是一種非常不好的想法,api 性能可能在下個版本中就不存在,但被包裝的 api以及由它引起的問題會一直困擾着你

56.遵守普遍接受的命名慣例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章