最佳實踐之 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";
控制元件例項命名
類中控制元件名稱必須與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專案開發過程中的一些常用的命名規範|程式碼編寫風格規範,該規範來源於個人資料整理(參考網路技術部落格)、個人專案實踐。參考這些規範有助於 專案的協同開發,專案程式碼的風格統一、在專案的後期維護中更方便、快捷的查詢、理解和修改別人的程式碼。如朋友們有更好的規範要求、歡迎分享出來、一起討論。
本篇參考文章列表:
hawstein分享的 Google Java程式設計風格指南
小巫分享的 Android研發規範
如果您對文章內容有任何疑問或有更好的見解, 歡迎通過留言或發郵件的方式聯絡我:
ice_zhengbin@163.com如需要轉載,請註明出處,謝謝!!
相關文章
- CSS規範 - 最佳實踐CSS
- 智慧合約最佳實踐 之 Solidity 編碼規範Solid
- Python程式設計規範+最佳實踐Python程式設計
- 17 條 Swift 最佳實踐規範Swift
- Android 程式碼規範 - 命名規範Android
- Android程式碼規範:命名規範Android
- 開發中的程式碼規範實踐 PHPPHP
- Android 程式碼規範大全Android
- dart系列之:dart程式碼最佳實踐Dart
- pkg版本規範管理自動化最佳實踐
- Android程式碼的書寫規範Android
- Android程式碼規範參考指南Android
- ReactNative專案實踐編碼規範React
- PHP 規範 - Symfony 程式碼規範PHP
- 編碼規範(四)之程式碼風格
- 程式碼審查最佳實踐
- android 編碼規範Android
- 程式碼規範之前端編寫碼規範前端
- 工程實踐:如何規範地列印程式日誌?
- Android學習之活動的最佳實踐Android
- ES6 實踐規範
- React 程式碼共享最佳實踐方式React
- React 整潔程式碼最佳實踐React
- iOS開發總結之程式碼規範iOS
- 程式碼分支規範
- 程式碼規範整理
- JS程式碼規範JS
- 前端程式碼規範前端
- iOS程式碼規範iOS
- Less程式碼規範
- css程式碼規範CSS
- iOS 程式碼規範iOS
- 程式碼部署規範
- Android編碼規範指南Android
- Android Emoji 最佳實踐Android
- Android MVP 最佳實踐AndroidMVP
- Android & Java 書寫簡潔規範的程式碼AndroidJava
- Android 命名規範 (提高程式碼可以讀性)Android