※ 引述《Hiigara (西亞加拉)》之銘言:
: 前幾天跟公司的前輩討論 JAVA 的事情
: 很意外的發現一些我覺得很基本的東西在公司裏面似乎知道的不多
: 例如說
: 在迴圈裏面做字串加法的效率很差(keyword: StringBuffer)
: Java Compiler 不會 inline,但 JVM 會自己看情況想辦法
: Java 裏面除了基本型態外的變數都是 reference
: 可是回頭一想,其實這些東西跟 design pattern 不一樣,是
: 看 code 看三百年也看不出來的東西
: 而我絲毫沒印象我是怎麼知道這些事情....
: 不知道大家是怎麼開始知道這類的事情的?
: 有辦法有系統的(而不只是靠 Google Surf)去挖掘這類知識嗎?
以你的問題來說是有書的
Practical Java 中文版
http://jjhou.boolan.com/jjtbooks-practical-java.htm
Java 效能優化指南
http://findbook.tw/book/9789862765340/price
不過字串,你要知道他是 immutable object 所以才會有這樣的行為
如果他不是 immutable object 就不需要一直產生新的物件,
你就不需要額外去搞 StringBuffer 來解決這個問題。
但是若它不是 immutable object,
那對於實作出節省記憶體的設計就有較高的難度了。
至少那些未系統化成為書本的知識,就得靠經驗來搞定。
一個是靠他人的經驗,
當別人指出你的 code 有問題時,就千萬巴著他問到底。
一個是個個人的經驗,
雖然沒有人統計是否悲慘的經驗佔據多數,
但就是寫過很糟的寫法,中間經過了 OOXX 的坷坎日子,
最後發現了為什麼這麼糟的主因,親手將它修正後,
你終於 Level UP (汗)
-------------------------------------------------
不過如果有書看就儘管看吧,
至少不會在艱辛的道路逗留太久。
Java Puzzler中文版-陷阱、錯誤與死角
http://findbook.tw/book/9789867199515/price
http://www.amazon.com/
Java-Puzzlers-Traps-Pitfalls-Corner/dp/032133678X
最後,有些東西不適合自己寫,
該抄標準範例時就抄,該用 library 的就用 library。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.124.100