作者結(jié)合實際,總結(jié)了10條Java開發(fā)人員應(yīng)該注意和避免的開發(fā)習(xí)慣,希望這里提供的信息能幫助到你! 1.遍歷結(jié)果集并且構(gòu)建對象 while (result.next()) { String name = result.getString(“name”); String address = result.getString(“address”); String email = result.getString(“email”); String phone = result.getString(“phone”); stuff.add(new AddressEntry(name,address,email,phone)); } 從這段代碼可以看出,如果你是個非專業(yè)或者頹廢派的開發(fā)者,那么肯定沒有深入理解ORM(對象關(guān)系映射),這可能是因為你看過Hibernate性能問題方面的博客,并且受了這方面的影響。但可以肯定,你會使用JDBC模板或者其他后臺數(shù)據(jù)庫操作。 2.在事務(wù)系統(tǒng)中寫PL/SQL 隨著時間的推移,業(yè)務(wù)邏輯將會在RDBMS中表現(xiàn)出來。設(shè)備事務(wù)也會移進數(shù)據(jù)庫里面,有些人會把這些轉(zhuǎn)換成類似COBOL的語言,并且綁定觸發(fā)器來調(diào)用其他通用版程序。換句話說,這樣做將會讓你在短期內(nèi)遇到一些非常棘手的系統(tǒng)遺留問題。對于Oracle投資人來說,這或許是件好事,但對于我們來說,就是災(zāi)難。 3.編寫Swing應(yīng)用程序或者調(diào)試 多年來,我一直認(rèn)為編寫GUI代碼是件非常可怕的事情,以至于我從不接觸前端代碼。這或許是因為Java被證明不適合做前端。Swing很慢。當(dāng)然,你也能編寫出非常快的Swing代碼,如果你在NetBeans環(huán)境下去編寫并且無需擔(dān)心瀏覽器兼容問題、或者砸一堆錢進去……但是,Swing還是很慢。默認(rèn)情況下,GUI的界面也是令人不滿意的。于是,出現(xiàn)了Java sandbox模型…… 4.Cast Java Generics并非完美,但在處理問題時,它卻成了優(yōu)先選擇對象。這里有一些非常極端的例子,說明Java Generics并非能夠高效的執(zhí)行。說實話,我也不想這樣說: Foo bar = (Foo) FooFactory.get(“bar”); 不幸地是,有些庫無法獲得消息并且還會代碼泄漏,但可以利用泛型來編寫單元測試 5.使用Calendar或Date進行日期計算 使用JDK Date和Calendar類來處理復(fù)雜的時間/日期計算,除了直觀上的操作外,內(nèi)置類僅提供了最原始的操作。大家可以使用像JODA Time這樣的現(xiàn)代庫。除非你在x86匯編器上編寫應(yīng)用程序。在這種的情況下,你可能很享受使用JDK Date和日歷進行計算。 6.配置Session Replication 所有的分布式緩存產(chǎn)品和項目已改為NoSQL的鍵值存儲。如果我們需要有狀態(tài)的客戶端并且不使用HttpSession,可以使用AJAX/Javascript,用于高度可靠的可伸縮應(yīng)用程序。 7.寫排序算法 可怕的是,我很少注意算法類,甚至編寫代碼的人也不會注意到這些,Java里面已經(jīng)提供了滿足各種需求的排序算法(或者是使用你名字命名的第三方庫)或者他們只是不太關(guān)心Comparable和Comparator是如何實現(xiàn)的。現(xiàn)在,你可以深入地探討一下,絕對是有益無害的。 8.寫自己的鏈接列表、棧、堆等 誠然,寫一個基礎(chǔ)的鏈接列表相當(dāng)容易,Wikipedia上就提供了這樣的一個非常漂亮的頁面,上面匯集了所有的鏈表代碼。所以,我可以選擇復(fù)制——粘貼。但還是比較喜歡(建議)使用數(shù)據(jù)結(jié)構(gòu),并且一直堅持。 9.編寫自己的池、集合或者一般的并發(fā)代碼 凡是知道Doug Lea的開發(fā)者肯定都很喜歡他。Doug Lea的java.utl.concurrent集合可以幫你解決很多并發(fā)性問題,另外,他還能提供非常好的解決方案。 10.處理日志框架 如何拼寫單詞,意味著所有的共享日志:SLF4J,例如S-U-CK。這個問題不僅僅是因為多年前Sun把Log4J’s接口接入到JDK中,Oracle也編寫java.util.logging包進行修復(fù)。話雖如此,但我還是希望大家在suck上面標(biāo)準(zhǔn)化java.util.logging而不是由某個人提出“明智的解決方案”供大家采用。 來源:CSDN |