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