寫在用Java一個月後

來源:互聯網
上載者:User

  學程式設計語言就是學編程思想,所以要盡量學習與自己熟悉的語言差異大的,以拓展思路。因為Java和C++長得太像,所以一直沒什麼興趣學習它,直到工作要用到。用了一個月,談幾點感受:

  1) 冗長

  只要有好的IDE,寫代碼不算太累,讀代碼有些費勁。我用的Java入門書是《Java編程思想》,總覺得書中的代碼太長,提取有用的資訊很累,所以主要看文字,很少看代碼。這一半是因為Java本身的冗長,一半是因為不少編程書的通病——廢代碼太多。

  2) 安全

  異常機制讓程式員更願意處理異常,很適合輸入不很明確的場合。

      型別安全讓程式員更專心於程式本身,而不用學習一些額外的東西來確保型別安全——比如在C,C++中,以下的代碼埋著bug:

if (cppIsBest == true) {    javaIsBest = false;}

  因為在C語言中,cppIsBest也可以是int類型(在C++中更無法確定是什麼詭異類型);而在Java中,以上的代碼則沒有問題,只是觀感上易引起C程式員的疙瘩……

  然後是記憶體安全,Java所有的對象都是在堆上建立,當然就配有GC,可以放心地new——起初這一點還是很爽到我的,現在習慣了……

  順便吐嘈一下現在很火的Objective-C。蘋果一直不願在iOS上讓Objc支援GC(其實iPhone做得再厚一點就可以支援GC的),讓程式員手動管理引用技術。現在幹出個ARC,讓clang自動管理引用計數——這正好說明之前手動管理方式的繁瑣、無意義。

  3) 沒有局部靜態變數

  不明白Java的設計者出於什麼樣的考慮不支援這一特性,這樣的惡果就是,本該出現在函數裡的靜態變數,都跑到類裡去了,造成不必要的命名汙染,嚴重降低代碼可讀性。

  4)缺少Lambda運算式

  相比其他主流語言,Java的抽象能力不夠,沒有build-in的lambda。只能通過內部類實現閉包結構——這不夠直觀,而且有另一個問題……

  5)泛型?

  剛寫Java代碼時嘗試過通過閉包和泛型實現Lambda,以期更好的抽象,減少重複。結果發現編譯不過,然後發現模板參數只會被認為Object類型……為此我又寫了個interface,打消泛型的想法。這樣寫出的代碼不夠直觀,且有命名汙染。

  最後,學習Java並不能帶來多少新的編程思想……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.