Java編程規範,java編程

來源:互聯網
上載者:User

Java編程規範,java編程

從一開始接觸編程就多次聽到編程得養成好的編碼習慣。的確,不讓好的編碼成為習慣,也就只能在隨意的代碼風格裡放縱了(網上瀏覽到的代碼是有這樣的吧)。

在網上也看了很多人的總結,學到很多。將其中的部分進行匯總,這次的隨筆大部分只是文字的搬運工,如有誤還請指正。

 

一.標識符命名(盡量以最少的字元表達完整的含義,但是命名中縮寫使用:盡量不要用縮寫,除非該縮寫是約定俗成的。)

常見的英文單詞縮寫:

1.1 駝峰(Camel)命名法:又稱小駝峰命名法,除首單詞外,其餘所有單詞的第一個字母大寫。

例:touchEvent,用於“方法名”,“變數名”,“參數名”(參數應該避免用單個字元命名。)
1.2 帕斯卡(pascal)命名法:又稱大駝峰命名法,所有單詞的第一個字母大寫。

例:TouchEvent,用於“介面名”、“類名”。
1.3 底線命名法:單詞與單詞間用底線做間隔。

例:touch_event,用於“常量名”命名(字母全大寫載用底線命名,如:TOUCH_DOWN)、“資源檔”、“控制項”及“布局檔案”(字母小寫)等。

1.4.其他。

包(package): 採用反寫網域名稱命名規則,即com.xx.xxx.xxxx形式,如:com.tencent.qq.activitys

全部使用小寫字母。一級包名為com,二級包名為xx(一般為公司或個人網域名稱),三級包名根據應用進行命名,四級包名為功能模組名。

 

二:源檔案結構

一個源檔案包含(按順序地):

以上每個部分之間用一個空行隔開。

2.1許可證或著作權資訊

如果一個檔案包含許可證或著作權資訊,那麼它應當被放在檔案最前面。插入著作權資訊參考

 2.2 import語句

import不要使用萬用字元*,即引入同一個包下面多個class的偷懶寫法。一般不建議這樣寫。

import語句可分為以下幾組,按照這個順序,每組由一個空行分隔:

組內不空行,按字典序排列。

2.3 類聲明

只有一個頂級類聲明(在與他同名的源檔案中)

註:1.類成員順序:每個類應該以某種邏輯去排序它的成員(最好不要簡單的按照時間順序添加到成員最後)。

2.當一個類有多個建構函式,或是多個同名方法,這些函數/方法應該按順序出現在一起,中間不要放進其它函數/方法。

 

三、格式

3.1大括弧

大括弧與if, else, for, do, while語句一起使用,即使只有一條語句(或是空),也應該把大括弧寫上。

對於非空塊和塊狀結構:

  • 左大括弧前不換行
  • 左大括弧後換行
  • 右大括弧前換行
  • 如果右大括弧是一個語句、函數體或類的終止,則右大括弧後換行; 否則不換行。例如,如果右大括弧後面是else或逗號,則不換行。
return new MyClass() {  @Override public void method() {    if (condition()) {      try {        something();      } catch (ProblemException e) {        recover();      }    }  }};

花括弧不要單獨一行,和它前面的代碼同一行。而且,花括弧與前面的代碼之間用一個空格隔開。

public void method() { // Good } public void method(){ // Bad}  public void method(){ // Bad} 

 

一個空的塊狀結構裡什麼也不包含,大括弧可以簡潔地寫成{},不需要換行。例外:如果它是一個多塊語句的一部分(if/else 或 try/catch/finally) ,即使大括弧內沒內容,右大括弧也要換行。

樣本:

void doNothing() {}

3.2 空格使用

1.if、else、for、switch、while等邏輯關鍵字與後面的語句留一個空格隔開。

// Goodif (booleanVariable) {    } else {    }// Badif(booleanVariable) {    }else {    }

2.運算子兩邊各用一個空格隔開

int result = a + b; //Good, = 和 + 兩邊各用一個空格隔開int result=a+b; //Bad,=和+兩邊沒用空格隔開

3.方法的每個參數之間用一個空格隔開。

public void method(String param1, String param2); // Good,param1後面的逗號與String之間隔了一個空格method(param1, param2); // Good,方法調用時,param1後面的逗號與param2之間隔了一個空格method(param1,param2); // Bad,沒有用一個空格隔開

3.3 空行的使用

將邏輯相關的程式碼片段用空行隔開,以提高可讀性。空行也只空一行,不要空多行。在以下情況需用一個空行:

  • 兩個方法之間
  • 方法內的兩個邏輯段之間
  • 方法內的局部變數和方法的第一條邏輯語句之間
  • 常量和變數之間

3.4 當一個運算式無法容納在一行內時,可換行顯示,另起的新行用8個空格縮排。

String str = String.format("%.3f,%.3f,%.3f,", bandGyroscopeEvent.getAngularVelocityX(),        bandGyroscopeEvent.getAngularVelocityY(), bandGyroscopeEvent.getAngularVelocityZ()) + strTimestamp + "\n";

3.5每次只聲明一個變數

不要使用組合聲明,比如

int a, b;//bad//goodint a;int b;

3.6 量Android Studio中格式化代碼快速鍵

CTRL + ALT + L (Win)
OPTION + CMD + L (Mac)

3.7 枚舉類

很多經典的Java書已經看到推薦使用枚舉來代替int常量了,但是在Android開發中不建議使用枚舉,特別是大型的App中,能不用則不用。因為它會犧牲執行的速度和並大幅增加檔案體積。也是效能最佳化中減少OOM(記憶體最佳化)的一個方面。Android總使用枚舉註解代替枚舉最佳化代碼。

3.8補充

文字大小的單位統一用sp,元素大小的單位統一用dp。

應用中的字串統一在strings.xml中定義,然後在代碼和布局檔案中引用。

顏色值統一在colors.xml中定義,然後在代碼和布局檔案中引用。另外,不要在代碼和布局檔案中引用系統的顏色,除了透明。

 

四、註解

4.1檔案頭注釋

檔案頂部統一添加著作權聲明,聲明的格式如下:

/** * Copyright (c) Microsoft Corporation All rights reserved.   */

4.2 類和介面注釋

類和介面統一添加javadoc注釋,格式如下:

/** * 類或介面的描述資訊 * * @author ${USER} * @date ${DATE} */

4.3 方法注釋

下面幾種方法,都必須添加javadoc注釋,說明該方法的用途和參數說明,以及傳回值的說明。

  • 介面中定義的所有方法
  • 抽象類別中自訂的抽象方法
  • 抽象父類的自訂公用方法
  • 工具類的公用方法
/** * 登入 * * @param loginName 登入名稱 * @param password  密碼 * @param listener  回調監聽器 */public void login(String loginName, String password, ActionCallbackListener<Void> listener);

4.4 變數和常量注釋

  • 介面中定義的所有常量
  • 公有類的公有常量
  • 枚舉類定義的所有枚舉常量
  • 實體類的所有屬性變數

本隨筆參考Google 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.