優秀 Java 程式員寫代碼的風格

來源:互聯網
上載者:User

標籤:str   事物   檢測方法   結束   複雜   while語句   複數   eof   最佳化   

往 期 精 彩 推 薦   

 

【1】Java Web技術經驗總結

【2】15個頂級Java多線程面試題及答案,快來看看吧

【3】面試官最喜歡問的十道java面試題

【4】從零講JAVA ,給你一條清晰地學習道路!該學什麼就學什麼!!

【5】福利:100G Java全套學習視頻免費送了

 

 

今天突發奇想,對編碼習慣和 編程風格 高度興趣,於是乎,找了一下關於編程風格(Java篇)的資料,希望對愛好編碼或者開始學習編碼的同學有協助!

 

來自《The Elements of Java Style》-《Java編程風格》一書,值得一讀的書籍,會讓你在細節上節省很多時間,合作之間更加愉快!

 

好處不多說了,但是有幾個原則如下 

 

1.保持原有風格

2.堅持最小驚奇原則

3.第一次就做對

4.記錄所有非規範行為

 

格式規範 

 

1.縮排嵌套的代碼:在每個代碼塊和嵌套中加入縮排,縮排代碼,加強可讀性。這些地方包括【類定義,內部類定義,方法定義,靜態塊,for迴圈語句,if-else語句,try、catch和finally塊,匿名內部類,while語句,do-while語句】

 

2.斷開很長的句子:第一,如果包含了逗號,那麼在每一個逗號後面都另起一行,把逗號後面的每一個運算式都和逗號前面的運算式的第一個字母對齊。第二,應該在優先順序最低的運算子之前斷行。

 

3.使用空白:關鍵字和左括弧之間,右括弧和緊隨其後的關鍵字,除了”.”之外的運算子與其前後的運算式之間用空格隔開。每個邏輯上獨立的方法和程式碼片段之間,定義類或者介面的成員之間,每個類和介面之間應該加入空白行。

 

4.不要直接使用Tab控制符:不同環境對Tab控制符的解釋也是不同的。

 

命名規範 

 

1.名稱應該具有實際意義

2.使用人們熟悉的名稱

3.謹慎使用過長的名字,可以使用簡明通用的縮寫

4.盡量保留母音字母

5.縮寫詞的第一個字母大寫

6.不要使用大小寫來區分的名字

 

包命名 

 

1.用你所在組織的網域名稱的倒序小寫形式作為包的根限定詞

2.使用單獨的小寫詞作為每個包的根名

3.僅當新舊版本二進位相容的時候,其包可以使用相同的名字,否則,請使用新名字

 

類型命名 

 

1.類和介面名中的每個單詞的第一個字母大寫

 

類命名 

 

1.用名詞命名類

2.具有成組相關屬性,靜態服務或者常量的類名字使用複數形式

 

介面命名 

 

1.用名詞或者形容詞命名介面

 

方法命名 

 

1.方法名中的第一個單詞小寫,其後每個單詞的第一個字母大寫

2.用動詞命名方法

3.遵循JavaBean中命名屬性訪問函數方法:set,get,is

 

變數命名 

 

1.變數命中的第一個單詞小寫,其後的每個單詞的第一個字母大寫

2.用名詞命名變數

3.集合引用名要用複數形式

4.為不重要的臨時變數簡曆並使用一套標準名字

 

欄位命名 

 

1.使用this欄位變數可以區分開局部變數

 

參數命名 

 

1.建構函式或者”set”方法給欄位分配參數賦值,參數名應該和欄位名相同

 

常量命名 

 

1.常量的每個單詞均大寫,單詞之間使用底線串連

 

文檔約定 

 

1.為使用和維護你的代碼的人編寫文檔

2.注釋和代碼要同步

3.使用積極的語氣,省略無用的詞語

 

注釋類型 

 

1.用文檔注釋來描述編程介面

2.用標準注釋格式隱藏代碼而不必刪除它們

3.用單行注釋解釋實現細節

 

文檔注釋 

 

1.在編寫代碼前描述編程介面

2.為公用,受保護,包,私人成員建立文檔

3.為每個包編寫總結和概述

4.為包的每個應用程式或組編寫概述

 

注釋風格 

 

1.對所有文檔注釋使用統一的格式和組織圖

2.關鍵字,標識符和常量應放到<code>…</code>標籤中

3.將代碼放入<pre>…</pre>標籤中

4.在標識符第一次出現的時候用{@link}標籤

5.為Javadoc標籤簡曆並使用一套固定的順序

6.使用第三人稱敘述的形式

7.編寫獨立的概述

8.省略概述中動作和服務的主語

9.省略事物概述中的對象和動詞

10.使用this而不是the來指代當前類中的執行個體

11.方法名或者建構函式名不需圓括弧,除非你想突出一個特殊的簽名

 

注釋內容 

 

1.每個類、介面、欄位和方法都編寫概述

2.完整描述每個方法的簽名

3.包含樣本

4.為前置、後置、不變條件編寫文檔

5.為已知的缺陷和不足編寫文檔

6.為同步文法編寫文檔

 

內部注釋 

 

1.僅添加有助於理解你的代碼的內部注釋

2.描寫代碼為什麼這樣做,而不是在做什麼

3.避免使用行章節附註釋

4.用行章節附註釋解釋局部變數聲明

5.建立並使用一套關鍵詞來標識尚未解決的問題

6.在嵌套程度高的控制結構中標記出嵌套結束位置

7.如果兩個case標記之間沒有break語句,就在中間加入“fall-through”注釋

8.標記空語句

 

編程約定 

 

1.將表示基礎資料類型的類聲明為final類型

2.通過本地類型和其他具體類型建立具體類型

3.定義小的類和小的方法

4.定義子類,以便任何使用超類的地方都可以使用子類

5.使所有欄位私人

6.使用多態來替代instanceof

 

型別安全 

 

1.以java.lang.Object封裝通用類,提供靜態類型檢查

2.以類的形式封裝枚舉類型

3.盡量使用泛型

 

語句和運算式 

 

1.用等價的方法替換重複的、複雜的運算式

2.使用塊語句代替控制流程結構的運算式

3.使用括弧明確操作順序

4.在switch語句中的最後一個case體使用break語句

5.使用equals(),而不是==來檢測對象的對等關係

 

構造 

 

1.構造狀態有效對象

2.不要從建構函式中調用非final方法

3.用嵌套的建構函式消除冗餘代碼

 

異常處理 

 

1.使用不受檢查、運行時的異常來報告可能在程式邏輯中出錯的嚴重未查明錯誤

2.使用檢查異常來報告可能發生,而在正常的程式運行時極少發生的錯誤

3.用傳回碼報告可預知的狀態改變

4.僅轉化異常來添加資訊

5.不要私自處置運行時或者錯誤異常

6.用finally語句塊釋放資源

 

斷言 

 

1.按照約定編程

2.用無用代碼消除機制實現斷言

3.用斷言捕捉代碼中的邏輯錯誤

4.用斷言檢測方法的前置條件和後置條件

 

並發 

 

1.僅在適當的地方使用線程

 

同步 

 

1.避免同步

2.用同步的封裝器,提供同步介面

3.如果方法包含幾個不需要同步的重要操作,那麼不要同步整個方法

4.讀寫執行個體變數的時候避免不必要的同步

5.使用notify()而不是notifyAll()

6.為同步初始化使用雙重檢查模式

 

效率 

 

1.使用懶惰初始化

2.避免建立不必要的對象

3.重新初始化並重新使用對象,盡量不要建立對象

4.把最佳化工作留在日後

 

打包約定 

 

1.將經常使用、更改、同時發布或者互相依存的類型,放在同一個包裡

2.共同封閉原則

3.重用/發布等價原則

4.無環依賴原則

5.將不穩定的類和介面隔離在單獨的包中

6.易於修改的包不要依賴於難以修改的包

7.最大化抽象最大化穩定性

8.將高層設計和架構作為穩定的抽象,組織為穩定的包

 

以上僅是一些規則簡單的羅列,推薦閱讀此書。

 

往 期 推 薦   

 

【1】Java Web技術經驗總結

【2】15個頂級Java多線程面試題及答案,快來看看吧

【3】面試官最喜歡問的十道java面試題

【4】從零講JAVA ,給你一條清晰地學習道路!該學什麼就學什麼!!

【5】福利:100G Java全套學習視頻免費送了

 

我的公眾號,歡迎關注!擷取更多技術乾貨!

 

優秀 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.