不願看到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
相關文章
- Stadia的尷尬:Google不願補貼 開發者選擇觀望Go
- 開發者測試:你必須知道 7 件事
- Java 開發者最容易犯的10個錯誤Java
- 你想知道的2018年軟體開發“10件事”
- Java開發難不難?Java
- 遊戲雜談:淺析很多獨立遊戲開發者堅持獨立而不願合作的原因遊戲開發
- 社群活動| Apache Pulsar 中文開發者與使用者組志願者招募Apache
- Spring 框架:Java 開發者的春天Spring框架Java
- BeanMappingKey,Java開發者們的福星!!!BeanAPPJava
- 成為優秀Angular開發者所需要學習的19件事Angular
- 志願者招募 | 2018 掘金開發者大會 · 微信小程式專場微信小程式
- 開發者寧願玩家去玩盜版,也不希望大家在這個平臺上購買他們的遊戲遊戲
- 開發者不騙開發者,你跟我說這隻要100塊?
- 開發者談設計《我的戰爭(This War Of Mine)》所學到的7件事
- 過來人分享:遊戲開發者創業需要注意的五件事遊戲開發創業
- 不會開賽車的管理者不是好的開發人
- SegmentFault 思否 - 7 年如一日做好開發者社群這件事,成為中文開發者領域最被信賴的創領者
- 7 個給新手 Java 開發者的提示Java
- 給新手 Java 開發者的 7 點提示Java
- Java 開發者的 Python 快速入門指南JavaPython
- Java 開發者 必備的工具 和 框架Java框架
- APP開發帶來的五個能看到的效果:APP
- python開發者常犯的10個錯誤Python
- 【快服務攻略】據說看到這篇文章的開發者都少走了好多彎路
- 【阿里技術專家的時間管理法】想提升工作效率,就別再做這七件事阿里
- 調查顯示95%中國使用者寧願放棄iPhone 也不願放棄微信iPhone
- 給Java開發初學者的10個學習建議,助你學習事半功倍!Java
- 給Java開發初學者的10個學習建議,助你學習事半功倍Java
- 初學者如何學Java開發?Java
- bug體質、不願開源的關係、30個小時的煎熬
- Java 開發者提高技術的 9 大神器Java
- 【收藏】Java開發者必去的技術網站Java網站
- 平民開發者≠技術差!真正發揮平民開發者的創造力,光有低程式碼還不夠
- WIN10 java開發環境的搭建Win10Java開發環境
- Java 開發最容易寫的 10 個bugJava
- Kibana:Kibana 不僅僅是針對開發者的 - 它是為所有人開發的
- windows10系統開啟開發者模式的方法Windows模式
- win10系統開啟開發者模式的方法Win10模式
- 志願者招募令|來!一起Build OceanBase第一次開發者大會UI