像Go一樣寫Java,從Go的特性,討論一種編程風格。

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

上篇轉帖的blog裡面提到了Go的特性,作為編寫Java時也可以給自己點編程風格的參考。

下面是提到的改進

  • 下面簡單學習和分析一下重點的風格提示,領會Ken和Pike的編程思想:

  • 規範的文法(不需要符號表來解析)記憶體回收(專屬)無標頭檔明確的依賴無循環相依性常量只能是數字int和int32是兩種類型字母大小寫設定可見度(letter case sets visibility)任何類型(type)都有方法(不是類型)沒有子類型繼承(不是子類)包層級初始化以及明確的初始化循序檔被編譯到一個包裡包package-level globals presented in any order沒有數實值型別轉換(常量起輔助作用)介面隱式實現(沒有“implement”聲明)嵌入(不會提升到超類)方法按照函式宣告(沒有特別的位置要求)方法即函數介面只有方法(沒有資料)方法通過名字匹配(而非類型)沒有建構函式和解構函式postincrement(如++i)是狀態,不是運算式沒有preincrement(i++)和predecrement賦值不是運算式明確賦值和函數調用中的計算順序(沒有“sequence point”)沒有指標運算記憶體一直以零值初始化局部變數取值合法方法中沒有“this”分段的堆棧沒有靜態和其它類型的注釋沒有模板沒有異常內建string、slice和map數組邊界檢查


  • 常量只能是數字

    可以學習。在jdbc編程的時候,我們把SQL語句提成設定檔。

  • 沒有子類型繼承(不是子類)

    少用繼承


  • 包層級初始化以及明確的初始化順序

    注意靜態變數和建構函式裡面的初始化順序,Java裡面的順序是和靜態變數的在類裡面聲明的出現順序有關係的。

  • 檔案被編譯到一個包裡

    少用別人的Jar包,減少DLL噩夢和Jar噩夢。


  • 介面隱式實現(沒有“implement”聲明)

    適當使用Object類型,JFinal就這麼做的。效率很高。

  • 嵌入(不會提升到超類)

    多彙總,多組合,少繼承

  • 方法按照函式宣告(沒有特別的位置要求)

    能靜態方法就都靜態化,提高效率。還有可以將靜態方法放到一個工具類裡面,不初始化此類,直接調用。FastJson就是這樣做的。極大提高效率。

  • 方法即函數

    同上

  • 介面只有方法(沒有資料)

    interface裡面不聲明資料。Java社區之前爭論過很多的問題,go給出一個參考答案。

  • 方法通過名字匹配(而非類型)

    這個適量使用Object前提。

  • 沒有建構函式和解構函式

    不要依賴建構函式,可以考慮編寫init方法和destory方法,手動擷取,釋放連結和空間,提高效率。

  • postincrement(如++i)是狀態,不是運算式

    慎用++

  • 沒有preincrement(i++)和predecrement

    不用++

  • 賦值不是運算式

    防止最2的==和=混淆

  • 明確賦值和函數調用中的計算順序(沒有“sequence point”)

    多用括弧。提高計算順序可讀性

  • 記憶體一直以零值初始化

    注意初始化的值。看情況是否要賦值初值。

  • 方法中沒有“this”

    哈,好東西。非常重要的提醒!!之前我在編程的時候隱隱約約覺得this不是很妥當。帶來大量的歧義和隱患。


  • 沒有模板

    Java的模板太噁心。雖然效率低下,但是還是要使用反射構造器。。。

  • 沒有異常

    少用異常做處理,能預測的故障盡量寫程式控制。

  • 內建string、slice和map

    找一個趁手的string,map工具。沒有的話,要自己寫一個,我選擇guava。

  • 數組邊界檢查

    注意越界,錯誤。所有的直接對數組的讀取之前都要判斷數組裡面的數值個數,千萬別越界。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.