Java 程序員的錯

jopen 10年前發布 | 19K 次閱讀 程序員

8718953thinkjava.jpg.jpg.jpg
編者注:可以噴語言,但不要搞人身攻擊! 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章(包括五節附錄)。”

</blockquote>

Android——如果說除了那些開發企業軟件的人,還有人會在意Java,那一定是因為它——它沿襲Java的老路,走的更遠。你會習以為常的發現,在讀一頁Android API文檔時,你根本不知道它究竟是在說什么。當然,最終你會弄明白,你需要繞道弄清楚其它17個類才行。什么?這讓你吃不消?你顯然不具備學習Java 系統API的百折不撓的精神。你會變成一個Loser

谷歌公司里開發Android的工程師忙于構筑偉大的系統框架,沒有時間解決真正的問題。

我是一個Android程序員,我討厭Java。它讓我很受傷。

來自:程序師網

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!