Java程式設計師的錯
編者注:可以噴語言,但不要搞人身攻擊! BTW:我也是一名 Java 程式設計師!
Java程式設計師是有問題的。我使用Java程式設計已經有10多年的歷史。同時,我還有過大量的使用其它語言開發的經歷,比如C#, C, C++, Python, Lua, Objective-C等等,我認為這些經歷在對我認識Java程式設計師的問題上起到了巨大的幫助。很多人說Java是一種很糟糕的程式語言。我不同意。Java語言有它自己的缺點,但我想,很多時候,當你看到Java在有些地方讓人很多人不爽時,那本質上不是Java語言的問題,而是它被錯誤的使用。
這些年來,在我見過的各種Java程式碼中,我發現這最大的問題是,寫程式碼的人痴迷於把自己當作架構師。他們很喜歡這樣,在我閱讀他們的程式碼時,經常會發現這些程式碼與其說是去真正的解決一個問題,事實上更像是為了解決一個問題而規劃的一個藍圖模板。這兩者之間並不是細微的差別。你會看到繼承很深的抽象層和成堆臃腫的樣板式的程式碼。由物件導向而誕生的子類超生現象無以復加。你根本無法一眼看明白、理解這些程式碼是幹什麼的——你需要一層層深入 挖掘,你需要理解它的整套濫用的術語和折磨人的詞彙(“AbstractAdapterFactory”),你必須要把自己當成系統的一部分。我已經記不起來上一次看到一個不是這種情況的Java專案是什麼時候了。
導致在Java王國裡程式碼最終總會變成這樣的原因有很多。Java語言自身要承擔一定責任。Java平臺的API就是上面說的這些問題的典範,於是,善良的程式設計師們沿襲標準類庫裡體現出來的編碼規範和風格,將之當作通用的好的程式設計原則,一下子就誤入迷途。Java語言還會對程式設計師強迫施加一種上層的形式主義和囉嗦,以至於最後你不得不習慣了這樣的風格,當看到其它語言的簡潔語法時,反而感覺就像它們都是沒穿衣服的裸體——這就是“斯德哥爾摩綜合症”(譯註:來源於1973年發生於此地的一次銀行搶劫案中,一個人質浪漫地被她的劫持者吸引住了)。
物件導向的流行部分原因也是這種心理作用造成的。有越來越多的程式設計師開始退後一步用整體的眼光認識Java,他們發現,作為一種程式設計模式,物件導向真的是相當的糟糕。然而,Java是最大限度的根植於物件導向模式,如果沒有物件導向,Java寸步難行。即使是今天,你仍然能看到大學裡的程式設計課程嚴重的偏向物件導向,大量的使用Java授課,相比起10年前、5年前要普遍的多。
雖然Java語言非常的流行,在企業軟體開發裡被普遍的採用,但這一點都無助於Java程式設計質量的提高。我坦白的說,你在各種企業產品裡看到的大量的Java程式碼都是由非常低質量的程式設計師寫出來的。
非常糟糕的是,這些問題並不是只體現在程式碼上,而是在整個Java生態系統上也是如此。不論是你使用的Java單元測試工具、依賴關係管理工具,還是模擬框架,即使是很小的Java程式,你也逃離不了它周邊龐大的系統。Java程式設計師無能為力——讓他們開發一個小功能,你必然會看到一個繼承15層的類工廠(factory)的出現。
今天,我在學習Gradle框架,很顯然是因為最近它在Android開發社群裡很火。Gradle來自於Java世界,所以它繼承了上面我說的所有的Java所具有的問題。正像Tim Bray 最近抱怨的:
“我的瀏覽器開啟的是Gradle文件的一頁:第50章.依賴關係管理。它有63個小章節,劃歸在10個一級章節下,這是第50章,文件一共有65章(包括五節附錄)。”
Android——如果說除了那些開發企業軟體的人,還有人會在意Java,那一定是因為它——它沿襲Java的老路,走的更遠。你會習以為常的發現,在讀一頁Android API文件時,你根本不知道它究竟是在說什麼。當然,最終你會弄明白,你需要繞道弄清楚其它17個類才行。什麼?這讓你吃不消?你顯然不具備學習Java系統API的百折不撓的精神。你會變成一個Loser。
谷歌公司裡開發Android的工程師忙於構築偉大的系統框架,沒有時間解決真正的問題。
我是一個Android程式設計師,我討厭Java。它讓我很受傷。
相關文章
- Java程式設計師常犯的10個錯誤Java程式設計師
- Java程式設計師容易犯的10個錯誤Java程式設計師
- 程式設計師必看的書之Java程式設計師程式設計師Java
- Java 程式設計師不容錯過的開發趨勢Java程式設計師
- Java程式設計師不要錯過的7款新工具Java程式設計師
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- Java程式設計師應該知道的10個除錯技巧Java程式設計師除錯
- 程式設計師 錯錯更優秀!程式設計師
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- ●招聘● Java程式設計師Java程式設計師
- JAVA程式設計師之路Java程式設計師
- 優秀Java程式設計師的程式設計風格Java程式設計師
- Java程式設計師的墮落Java程式設計師
- 好程式設計師Java培訓Java程式設計師必學技術程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- Java程式設計師可能犯的3個常見SQL錯誤Java程式設計師SQL
- Java程式設計師在寫SQL程式時候常犯的10個錯誤Java程式設計師SQL
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 【北京】誠聘java程式設計師和高階程式設計師Java程式設計師
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- Java程式設計師的成長之路Java程式設計師
- 初級JAVA程式設計師的困惑Java程式設計師
- 北京急聘JAVA程式設計師Java程式設計師
- UML:java程式設計師指南Java程式設計師
- 金山招聘JAVA程式設計師Java程式設計師
- 程式設計師程式設計生涯中會犯的7個錯誤程式設計師
- (網頁)Java程式設計師們最常犯的10個錯誤(轉)網頁Java程式設計師
- 有哪些錯是Java程式設計師在面試中最容易犯的呢?Java程式設計師面試
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- Java程式設計師必讀:最新流行的Java開發程式設計技術Java程式設計師
- 程式設計師的“非程式設計師”之路程式設計師
- Java程式設計師修煉之道—併發程式設計Java程式設計師
- 程式設計師不應該再犯的五大程式設計錯誤程式設計師
- 怎麼從初、中級Java程式設計師過渡到高階Java程式設計師?Java程式設計師
- 趣圖:正在除錯中的程式設計師除錯程式設計師
- 趣圖:正在除錯ing 的程式設計師除錯程式設計師
- 程式設計師可能常犯的 6 個錯誤程式設計師