不願看到Java開發者再做的10件事
編者注:Andy是OSI(開發系統整合者)的CEO,同時也是位思想先鋒及優秀部落格作者。
William F. Buckley.Jr 曾經說過,“保守主義者是那些逆著歷史潮流不斷喊停的人,其他人都不願意這麼做或者對他們這麼做顯得沒有耐性”。雖然我對此瞭解不多,但是每次看到有Java開發人員做以下事情或者我自己被迫做這些事情時,總想跳出來叫停。
0、遍歷結果集並構造物件
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泛型並不完美,甚至不是我所首選的 解決方案,有時總會有些邊界情況使得泛型無法有效處理。例如,我實在不想再這麼做:
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這個爛標準,也不要有人搞出個偉大的其他日誌候選項。這就像有人進行下面的對話:
“我有可口可樂”
“喝百事怎麼樣?”
“管它呢,反正喝了都胖,有什麼區別?”
英文原文:Andrew C. Oliver
相關文章
- Flex開發者需要知道的10件事Flex
- Flash開發者需要知道的10件事
- 想提升工作效率 就別再做這七件事
- 想提升工作效率,就別再做這七件事
- 不適合大資料的10件事情大資料
- SQL Server 不按預期工作的 10 件事SQLServer
- 你不知道Java的10件事Java
- Stadia的尷尬:Google不願補貼 開發者選擇觀望Go
- Java開發者應該列入年度計劃的5件事Java
- 分享開發者在創業前應該明確的10件事創業
- 你必須詢問聰明的Web開發者的10件事情Web
- 飲料行業不會告訴你的10件事行業
- 關於 Java 你不知道的 10 件事Java
- Ruby開發者應該明瞭的15件事
- 遊戲雜談:淺析很多獨立遊戲開發者堅持獨立而不願合作的原因遊戲開發
- 華爾街日報:飲料行業不會告訴你的10件事行業
- 當開發者產生一個偉大的想法之後應該做的10件事
- 開發者不騙開發者,你跟我說這隻要100塊?
- 開發者測試:你必須知道 7 件事
- 開發者頂尖人物的訪談對話——同樣的事情還能再做一次嗎?
- 【阿里技術專家的時間管理法】想提升工作效率,就別再做這七件事阿里
- 看到有人猶豫買不買教程有感
- java操作excel表(看到的別人的文章)JavaExcel
- 開發者寧願玩家去玩盜版,也不希望大家在這個平臺上購買他們的遊戲遊戲
- 看到BAT的薪資待遇,不淡定了的舉手BAT
- 看到照片 谷歌就知道在哪拍的 防不勝防!谷歌
- Java 開發者最容易犯的10個錯誤Java
- 非技術型使用者並不瞭解軟體相關的10件事
- 甲骨文要放棄不賺錢的Java?開發者不安,心痛Java
- 成為優秀Angular開發者所需要學習的19件事Angular
- iOS 7應用開發者需要注意的五件事iOS
- 獨立開發者入行之前應該知道的8件事
- 知乎熱門:為什麼你寧願吃生活的苦,也不願吃學習的苦
- Java中有關Null的9件事JavaNull
- docker – 你應該知道的10件事Docker
- 使用Docker容器不能忽略的10件事Docker
- 獨立開發者的自白:Objective-C最糟糕的13件事Object
- 不管你願不願意,Apps 將徹底顛覆這個世界APP