天天看點

最佳實踐之Android代碼規範

命名規範

包命名規範

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

​com.isa.crm.activity​

​ |

​com.isa.crm.adapter​

JAVA類命名規範

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

​Product​

​ | ​

​ProductManager​

​ |

​ProductListActivity​

​ | ​

​ProductListAdapter​

​ | ​

​JsonHTTPSRequest​

接口命名規範

命名規則與類一樣采用大駝峰命名法,多以​

​able​

​或​

​ible​

​結尾。例如:​

​interface Runable​

​ | ​

​interface Accessible​

成員變量命名規範

采用小駝峰命名法。

臨時變量命名

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

​private String userName;​

​ 而不推薦使用 ​

​private String mUserName;​

常量命名

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

​public static final String TAG = "tag";​

控件執行個體命名

​{module_name}​

​)。例如:​

​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的邏輯名稱}​

​,如:​

​LinearLayout​

​ 的布局id –> ​

​ll_crm_content​

​​

​ImageView​

​ 的布局id –> ​

​iv_qz_photo​

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

最佳實踐之Android代碼規範

圖檔資源檔案命名規範

圖示命名:​

​{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基類
*
*/
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​

  • 小駝峰式命名法(
  • ):

    除了第一個單詞,每個單詞的第一個字母都大寫 如:

說明