不願看到Java開發者再做的10件事

編者注:Andy是OSI(開發系統集成者)的CEO,同時也是位思想先鋒及優秀博客作者。

William F. Buckley.Jr 曾經說過,“保守主義者是那些逆着歷史潮流不斷喊停的人,其他人都不願意這麼做或者對他們這麼做顯得沒有耐性”。雖然我對此瞭解不多,但是每次看到有Java開發人員做以下事情或者我自己被迫做這些事情時,總想跳出來叫停。

0、遍歷結果集並構造對象

1
2
3
4
5
6
7
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));
 }

如果你是個時髦的開發者而不是專業人員,顯然你從某篇博客中讀過有開發者遇到Hibernate的“性能問題”,因而認爲ORM都不好,覺得手動編碼“明顯更好”。喜歡的話你當然可以用JDBCTemplate之類,但是謝謝你的對它們的無端指責,我還會繼續用我的JPA/Hibernate。

1、 在交易型系統中寫PL/SQL

隨着時間推移,你係統中的業務邏輯會被逐步遷移到關係數據庫中,所有寶貴的設備交易都會遷移到數據庫中去。有的人將它們轉換爲類似COBOL的處理方式,綁定到調用物化視圖的觸發器中。通過他們調用其它扁平化版本。簡而言之,很快你會擁有一個極其難以控制的遺留系統。這對Oracle的投資者而言是好事,但對我們則不然。

2、編寫,調試甚至真正使用Swing應用程序

許多年來我一直覺得自己在GUI代碼方面相當差勁,甚至根本不該去碰前端的東西。Java看起來根本不應該和前端有什麼關聯,Swing效率很低。沒錯,如果你是開發NetBeans的前Sun員工,又不用擔心瀏覽器,而且還有一堆內存空間可以盡情使用的話,確實可以寫出很快的Swing代碼來。否則Swing的確很慢。默認情況下Swing弄出一堆跟原生GUI動畫一樣的圖形界面來,讓人不爽。此外還有Java的沙箱模型。

3、強制類型轉換

Java泛型並不完美,甚至不是我所首選的 解決方案,有時總會有些邊界情況使得泛型無法有效處理。例如,我實在不想再這麼做:

1
Foo bar = (Foo) FooFactory.get(“bar”);

不幸的是,總有些庫沒有及時更新,而且遺留代碼總是存在。我們只好自作自受,乖乖多寫些測試用例、使用 泛型。

4、用Calendar或Date來做日期計算

用JDK中的Date和Calendar來做複雜的日期和時間計算簡直就是浪費生命。內建的類僅僅支持最基本的操作,而且一點也不直觀。我們還是用JODA Time這樣的先進庫來代替吧,除非您還在用x86編譯器來寫Web應用,因爲除此之外你也享受不到用JDK的Date和Calendar之類帶來的樂趣。

5、配置會話(Session)複製

2000年早就過去了,現在所有分佈式緩存產品和項目都已用NoSQL的鍵值對存儲方式重構過了。如果需要帶狀態的客戶端,那就用AJAX/Javascript好了,把HttpSession丟一邊去吧,這樣的話可以大大提高應用程序的可靠性和可擴展性。我們也就不用因爲隱藏在深處的一連串異常爆發而半夜起來一路顛簸了。可別誤會了,半夜顛簸挺好的,至少我老婆因此買了輛小貨車(雖然我更喜歡我那輛Ninja 650機車),不過老實說,是時候換成更好、更快、更聰明的東西了。

6、自己寫排序算法

這是最讓人厭惡的,我個人對排序算法並不留意。寫排序代碼的人要麼是不知道Java已經提供了你所需的排序算法(或者自己寫了個排序的第三方庫文件),要麼根本不知道Comparable和Comparator如何工作。趕緊去補充一下功課,以後再也不要自己寫排序自尋煩惱了。

7、自己寫鏈表,棧,隊列等

必須承認,寫個基本的鏈表挺容易。Wikipedia有個關於鏈表的不錯的頁面(http://en.wikipedia.org/wiki/Linked_list),上面有含代碼的內容,完全可以直接複製粘貼,不過何苦要這麼做?也許我是挺懶的,不過我更願意用一個已經通過測試的數據結構,而我也是花過不少功夫才決定這麼做的。

8、自己寫池,集合或通用的併發代碼

認識Doug Lea大師。崇拜大師,那就支持大師的java.util.concurrent包吧。大師可不是凡人,人家可的以高度並行,因此您想得到的併發問題對策,大師也早已想到。

9、處理日誌框架

你用什麼詞來形容Commons logging、SLF4J之類?答案是:爛!幾年前Sun不肯簡單地把Log4J的接口引入JDK就導致了這個問題,Oracle倒是可以把java.util.logging做得好點。我寧可大家都用java.util.logging這個爛標準,也不要有人搞出個偉大的其他日誌候選項。這就像有人進行下面的對話:

“我有可口可樂”

“喝百事怎麼樣?”

“管它呢,反正喝了都胖,有什麼區別?”



本文轉載自:http://www.importnew.com/631.html

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