前言
團隊項目開發前的統一三要素:統一需求/開發文檔,統一代碼規範,統一環境(編譯/測試/發佈)。
一個項目團隊,要想有高效的產出,必須在團隊協作上下好功夫,必須在項目開發統一進度上做好協調。只有在高效的協同環境下,纔能有優質的產出。這是我多年的經驗之談。也是配合過多個團隊之後的深刻感悟。
每一個程序員都是有獨立開發思維模式,都有自己的編碼行爲和操作習慣。所以,在一個團隊中,怎麼做到更高效的協同,不僅僅是每個開發者自身的協同配合能力,更重要的是項目管理者,怎樣做到統一要求和統一實行。
舉個很簡單的例子。以前在一個小團隊裏,每次進行代碼更新的時候,都是有一大堆更新。最後發現很多不是代碼功能的個性,而只是大家的code style不一樣。每次merge代碼都要diff查看修改的地方,這樣很影響效率。而且如果你只是做爲一個普通的開發者,要求其它人和你用統一style,別人未必接受。這時的項目管理者,纔是最需要去統一規範的。保持規範統一,纔是高效協作產出的前提。
Android項目開發需要統一哪些規範呢?
在些列出一些常用規範,和容易出問題的地方,方便自己查找,也方便和更多的朋友交流!
一、編碼方式統一:UTF-8。一般項目都用utf-8。有其它編碼的,可自行要求修改。
在項目代碼中右鍵,就能出現如下:
或者去個性配置文件:
二、代碼樣式code style:比如,tab縮進4個空格,或者 tab size等。
1. 自定義的編碼格式xml 文件。沒有的話,可以下載
2. 把xml文件複製到 C:/Users/YourUserName/.AndroidStudio/config/codestyles 目錄下,如果沒有codestyles目錄可以自己新建一個。 (目前還不支持導入)
3. 重啓android studio
4. android studio 中 Setting-> Editor-> Code Style-> JAVA-> Scheme 選擇自定義的編碼格式文件。
具體如下圖:
保持代碼格式的一致性,對項目的協同開發很有必要。優秀的代碼習慣是,提交代碼前格式化代碼,讓代碼統一規則上傳,保證代碼的整潔。所以,在團隊中必須支持規範代碼。提交前所有修改的類都必須ctrl+f(規範代碼),然後再提前。良好的編碼習慣,能讓代碼變得更優雅漂亮。
命名規範
Java代碼一般使用駝峯式規則,用名詞或名詞詞組命名,每個單詞的首字母大寫。常用類的命名:
- activity類,命名以Activity爲後綴,如:LoginActivity
- fragment類,命名以Fragment爲後綴,如:ShareDialogFragment
- service類,命名以Service爲後綴,如:DownloadService
- adapter類,命名以Adapter爲後綴,如:CouponListAdapter
- 工具類,命名以Util爲後綴,如:EncryptUtil
- 模型類,命名以BO爲後綴,如:CouponBO
- 接口實現類,命名以Impl爲後綴,如:ApiImpl
方法命名
- 初始化方法,命名以init開頭,例:initView
- 按鈕點擊方法,命名以to開頭,例:toLogin
- 設置方法,命名以set開頭,例:setData
- 具有返回值的獲取方法,命名以get開頭,例:getData
- 通過異步加載數據的方法,命名以load開頭,例:loadData
- 布爾型的判斷方法,命名以is或has,或具有邏輯意義的單詞如equals,例:isEmpty
控件命名
控件命名,一般都有各自習慣。但爲了保證代碼的整潔,儘量保持統一風格。
常量命名
全部爲大寫單詞,單詞之間用下劃線分開。
public final static int PAGE_SIZE = 20;
變量命名
{範圍描述+}意義描述+類型描述的組合,用駝峯式,首字母小
private TextView headerTitleTxt; // 標題欄的標題
private Button loginBtn; // 登錄按鈕
控件id命名
控件縮寫{範圍}意義,範圍可選,只在有明確定義的範圍內才需要加上。
<!-- 這是標題欄的標題 -->
<TextView
android:id="@+id/txt_header_title"
... />
<!-- 這是登錄按鈕 -->
<Button
android:id="@+id/btn_login"
... />
layout命名
組件類型{範圍}功能,範圍可選,只在有明確定義的範圍內才需要加上。
activity_{範圍_}功能,爲Activity的命名格式
fragment_{範圍_}功能,爲Fragment的命名格式
dialog_{範圍_}功能,爲Dialog的命名格式
item_list_{範圍_}功能,爲ListView的item命名格式
item_grid_{範圍_}功能,爲GridView的item命名格式
header_list_{範圍_}功能,爲ListView的HeaderView命名格式
footer_list_{範圍_}功能,爲ListView的FooterView命名格式
strings的命名
類型{範圍}功能,範圍可選。
以下爲幾種常用的命名:
頁面標題,命名格式爲:title_頁面
按鈕文字,命名格式爲:btn_按鈕事件
標籤文字,命名格式爲:label_標籤文字
選項卡文字,命名格式爲:tab_選項卡文字
消息框文字,命名格式爲:toast_消息
編輯框的提示文字,命名格式爲:hint_提示信息
圖片的描述文字,命名格式爲:desc_圖片文字
對話框的文字,命名格式爲:dialog_文字
menu的item文字,命名格式爲:action_文字
colors的命名
前綴{控件}{範圍}{_後綴},控件、範圍、後綴可選,但控件和範圍至少要有一個。
背景顏色,添加bg前綴
文本顏色,添加text前綴
分割線顏色,添加div前綴
區分狀態時,默認狀態的顏色,添加normal後綴
區分狀態時,按下時的顏色,添加pressed後綴
區分狀態時,選中時的顏色,添加selected後綴
區分狀態時,不可用時的顏色,添加disable後綴
drawable的命名
前綴{控件}{範圍}{_後綴},控件、範圍、後綴可選,但控件和範圍至少要有一個。
圖標類,添加ic前綴
背景類,添加bg前綴
分隔類,添加div前綴
默認類,添加def前綴
區分狀態時,默認狀態,添加normal後綴
區分狀態時,按下時的狀態,添加pressed後綴
區分狀態時,選中時的狀態,添加selected後綴
區分狀態時,不可用時的狀態,添加disable後綴
多種狀態的,添加selector後綴(一般爲ListView的selector或按鈕的selector)
動畫文件命名
動畫類型_動畫方向。
fade_in,淡入
fade_out,淡出
push_down_in,從下方推入
push_down_out,從下方推出
slide_in_from_top,從頭部滑動進入
zoom_enter,變形進入
shrink_to_middle,中間縮小
註釋規範
- 文件頭註釋
文件頂部統一添加版權聲明,聲明的格式如下:
/**
* Copyright (c) 2015. Keegan小鋼 Inc. All rights reserved.
*/
- 類和接口註釋
類和接口統一添加javadoc註釋,格式如下:
/**
* 類或接口的描述信息
*
* @author ${USER}
* @date ${DATE}
*/
方法註釋
下面幾種方法,都必須添加javadoc註釋,說明該方法的用途和參數說明,以及返回值的說明。- 接口中定義的所有方法
- 抽象類中自定義的抽象方法
- 抽象父類的自定義公用方法
- 工具類的公用方法
/**
* 登錄
*
* @param loginName 登錄名
* @param password 密碼
* @param listener 回調監聽器
*/
public void login(String loginName, String password, ActionCallbackListener<Void> listener);
- 變量和常量註釋
下面幾種情況下的常量和變量,都要添加註釋說明,優先採用右側//來註釋,若註釋說明太長則在上方添加註釋。
- 接口中定義的所有常量
- 公有類的公有常量
- 枚舉類定義的所有枚舉常量
- 實體類的所有屬性變量
public static final int TYPE_CASH = 1; // 現金券
public static final int TYPE_DEBIT = 2; // 抵扣券
public static final int TYPE_DISCOUNT = 3; // 折扣券
private int id; // 券id
private String name; // 券名稱
private String introduce; // 券簡介
注:部分信息來源於網絡,若有使用不當,請聯繫!感謝!