最佳實踐之 Android程式碼規範

小呂-ICE發表於2015-04-08

命名規範

包命名規範

採用反域名命名規則,包名全部小寫,連續的單詞只是簡單地連線起來,不使用下劃線,一級包名為com,二級包名為xxx(可以是公司域名或者個人命名),三級包名根據應用進行命名,四級包名為模組名或層級名。如:

com.isa.crm.activity |
com.isa.crm.adapter

JAVA類命名規範

採用大駝峰式命名法,儘量避免縮寫,除非該縮寫是眾所周知的,比如HTML,URL,如果類名稱包含單詞縮寫,則單詞縮寫的每個字母均應大寫。如:

Product | ProductManager |
ProductListActivity | ProductListAdapter | JsonHTTPSRequest

介面命名規範

命名規則與類一樣採用大駝峰命名法,多以ableible結尾。例如:

interface Runable | interface Accessible

成員變數命名規範

採用小駝峰命名法

臨時變數命名

使用標準的Java命名方法,不推薦使用Google的m命名法。例如:

private String userName; 而不推薦使用 private String mUserName;

常量命名

常量使用全大寫字母加下劃線的方式命名。例如:

public static final String TAG = "tag";

控制元件例項命名

類中控制元件名稱必須與xml佈局id保持一致(可以去掉{module_name})。例如:

在佈局檔案中 Button 的id為: android:id="@+id/btn_pay"

private Button btn_pay;

方法命名規範

動詞或動名詞,採用小駝峰命名法。例如:

run(); | onCreate(); | syncProducts();

佈局檔案(Layout)命名規範

全部小寫,採用下劃線命名法。其中{module_name}為業務模組或是功能模組等模組化的名稱或簡稱。

activity layout{module_name}_activity_{名稱} 例如:

crm_activity_main.xml | crm_activity_shopping.xml

fragment layout:{module_name}_fragment_{名稱} 例如:

crm_fragment_main.xml | crm_fragment_shopping.xml

Dialog layout: {module_name}_dialog_{名稱} 例如:

crm_dialog_loading.xml

列表項佈局命名{module_name}_list_item_{名稱} 例如:

crm_listitem_customer.xml

包含項佈局命名include_{名稱} 例如:

include_head.xml

adapter的子佈局{module_name}_item_{名稱} 例如:

qz_item_order.xml

widget layout{module_name}_widget_{名稱} 例如:

crm_widget_shopping_detail.xml

資源id命名規範

命名模式為:{view縮寫}_{module_name}_{view的邏輯名稱},如:

顧客管理CRM模組佈局 LinearLayout 的佈局id –> ll_crm_content

模組簡稱為qz的 ImageView 的佈局id –> iv_qz_photo

常見控制元件View與其縮寫對照參考表如下:

這裡寫圖片描述

圖片資原始檔命名規範

圖示命名{module_name}_ic_{名稱} 例如:

crm_ic_app.png

背景圖片命名{module_name}_bg_{名稱} 例如:

crm_bg_navbar_highlight_normal.9.png

按鈕Button命名{module_name}_btn_{名稱} 例如:

crm_btn_login_normal.9.png

按鈕checkbox圖片命名{module_name}_checkbox_{名稱} 例如:

crm_checkbox_cart_true.png

其他圖片命名{module_name}_icon_{名稱} 例如:

qz_icon_blue_circle.png

程式碼風格

大括號問題

風格一

if (hasMoney())
{

}
else
{

}

風格二

if (hasMoney()) {

} else {

}

空格問題

if else | while | 運算子兩端 等後面需用空格隔開。例如:

規範的編寫方式:

if (hasMoney()) {

} else {

}


for (int i = 0; i < 10; i++) {

}

不規範的編寫方式:

if(hasMoney()){

}else{

}


for(int i=0; i<10;i++){

}

方法引數

當方法引數數量過多時,需進行換行處理.

註釋

必須要對所有例項變數、類常量進行註釋說明 例如:

// 使用者姓名
private String userName

必須對所有的類、介面進行註釋說明 例如:

/**
* Activity基類
*
* @author ice_zhengbin@163.com
*/
public class BaseActivity extends Activity
{

}

必須對所有的方法進行註釋說明 例如:

/**
* 請求
*
* @param path 路徑
* @param generalParams 基本引數
* @param businessParams 業務引數
* @return 請求結果
* @throws ApiException 請求錯誤則返回該異常
*/
public Map<String, Object> request (String path,
              Map<String, Object> generalParams,
              Map<String, Object> businessParams) throws ApiException {

   return null;
}

更多詳細也可以參考:
[Google Java程式設計風格指南](http://hawstein.com/posts/google-java-style.html)

駝峰式命名法(CamelCase)

  • 大駝峰式命名法(UpperCamelCase):
    每個單詞的第一個字母都大寫 如:XmlHttpRequest

  • 小駝峰式命名法(lowerCamelCase):
    除了第一個單詞,每個單詞的第一個字母都大寫 如:xmlHttpRequest

說明

該篇介紹為Android專案開發過程中的一些常用的命名規範|程式碼編寫風格規範,該規範來源於個人資料整理(參考網路技術部落格)、個人專案實踐。參考這些規範有助於 專案的協同開發,專案程式碼的風格統一、在專案的後期維護中更方便、快捷的查詢、理解和修改別人的程式碼。如朋友們有更好的規範要求、歡迎分享出來、一起討論。



本篇參考文章列表:



如果您對文章內容有任何疑問或有更好的見解, 歡迎通過留言或發郵件的方式聯絡我:
ice_zhengbin@163.com

如需要轉載,請註明出處,謝謝!!

相關文章