Effective Java中文版(第3版)精華心得筆記,最容易理解的筆記沒有之一
Effective Java Item9 傾向使用try-with-resources勝過於try-finally
整理Effective Java書中Item 9: Prefer try-with-resources to try-finally心得筆記
主旨
蠻多lib提供使用資源後必須手動呼叫close關閉資源,符合開閉原則(OCP),但往往就有人沒有好好遵守,最後造成記憶體洩漏問題。
Effective Java Item8 避免使用finalizers和cleaners
整理Effective Java書中Item 8: Avoid finalizers and cleaners心得筆記
主旨
開門見山提到finalizers是不可預測行為、危險的並且也是不並要的。不當使用可能會導致不穩定的行為、糟糕的效能以及其他問題。在Java9已經把finalizers換成cleaners了,雖然cleaners比finalizers危險性較小,但還是一樣有無法預測、效能差等問題,很多開發者看完這段還是不清楚書中到底要說什麼。繼續研究下去。
Effective Java Item7 移除不需要的物件引用
整理Effective Java書中Item 7: Eliminate obsolete object references心得筆記
主旨
由於Java有GC的機制,很多時候開發者不會考慮到記憶體管理或著覺得不需要考慮,這是錯誤的觀念,如果忽略可能導致潛在memory leak問題,必須重視。
Effective Java Item6 避免不必要的創建物件
整理Effective Java書中Item 6: Avoid creating unnecessary objects心得筆記
主旨
如果是不可變的物件(Immutable object),重複使用該物件可以讓效能以及資源控制更好,例如之前提到的靜態工廠方法Boolean.valueOf(String)
。
點出問題
- 底層封裝了處理方式
問題在於很多開發者不知道其實自己已經不自覺創了很多物件,尤其是java開發者在現在調用api便利的情況下,也沒有去探究底層原理,積少成多造成系統壓力。下面範例判斷字符串是否為有效的羅馬數字。