Android技術積累:開發規范
上個月發布了Android項目重構的三篇系列文章,其中,界面篇中提到了在項目中保持規范性的重要性,也有簡單舉了幾個例子。這篇文章則將其延伸,提供更完整的開發規范說明。 if、else、for、switch、while等邏輯關鍵字與后面的語句留一個空格隔開。 運算符兩邊各用一個空格隔開。 方法的每個參數之間用一個空格隔開。 將邏輯相關的代碼段用空行隔開,以提高可讀性。空行也只空一行,不要空多行。在以下情況需用一個空行: Windows:CTRL+ALT+L 域名反寫+項目名稱+模塊名稱,全部單詞用小寫字母。 使用大駝峰規則,用名詞或名詞詞組命名,每個單詞的首字母大寫。 使用小駝峰規則,用動詞命名,第一個單詞的首字母小寫,其他單詞的首字母大寫。 全部為大寫單詞,單詞之間用下劃線分開。 {范圍描述+}意義描述+類型描述的組合,用駝峰式,首字母小寫。 控件縮寫_{范圍_}意義,范圍可選,只在有明確定義的范圍內才需要加上。 組件類型_{范圍_}功能,范圍可選,只在有明確定義的范圍內才需要加上。 類型_{范圍_}功能,范圍可選。 前綴{_控件}{_范圍}{_后綴},控件、范圍、后綴可選,但控件和范圍至少要有一個。 前綴{_控件}{_范圍}{_后綴},控件、范圍、后綴可選,但控件和范圍至少要有一個。 動畫類型_動畫方向。 文件頂部統一添加版權聲明,聲明的格式如下: 類和接口統一添加javadoc注釋,格式如下: 下面幾種方法,都必須添加javadoc注釋,說明該方法的用途和參數說明,以及返回值的說明。 下面幾種情況下的常量和變量,都要添加注釋說明,優先采用右側//來注釋,若注釋說明太長則在上方添加注釋。 這份開發規范說明比較細,也許還不是非常完整,但里面提到的每一條規范都很有用。按照此規范嚴格執行,將大大提高代碼的可讀性和維護性。 掃描以下二維碼即可關注訂閱號。
微信訂閱號:keeganlee_me
寫于2015-07-09
書寫規范
1. 編碼方式統一用UTF-8. Android Studio默認已是UTF-8,只要不去改動它就可以了。
2. 縮進統一為4個空格,將Tab size設置為4則可以保證tab鍵按4個空格縮進。另外,不要勾選上Use tab character,可以保證切換到不同tab長度的環境時還能繼續保持統一的4個空格的縮進樣式。
3. 花括號不要單獨一行,和它前面的代碼同一行。而且,花括號與前面的代碼之間用一個空格隔開。
public void method() { // Good
}
public void method()
{ // Bad
}
public void method(){ // Bad
}
4. 空格的使用
// Good
if (booleanVariable) {
// TODO while booleanVariable is true
} else {
// TODO else
}
// Bad
if(booleanVariable) {
// TODO while booleanVariable is true
}else {
// TODO else
}
int result = a + b; //Good, = 和 + 兩邊各用一個空格隔開
int result=a+b; //Bad,=和+兩邊沒用空格隔開
public void method(String param1, String param2); // Good,param1后面的逗號與String之間隔了一個空格
method(param1, param2); // Good,方法調用時,param1后面的逗號與param2之間隔了一個空格
method(param1,param2); // Bad,沒有用一個空格隔開
5. 空行的使用
6. 當一個表達式無法容納在一行內時,可換行顯示,另起的新行用8個空格縮進。
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
7. 一行聲明一個變量,不要一行聲明多個變量,這樣有利于寫注釋。
private String param1; // 參數1
private String param2; // 參數2
8. 行寬設置為100,設置格式化時自動斷行到行寬位置。
9. 使用快捷鍵進行代碼自動格式化。
Mac:OPTION+COMMAND+L10. 一個方法最多不要超過40行代碼。
11. 范圍型的常量用枚舉類定義,而不要直接用整型或字符,這樣可以減少范圍值的有效性檢查。
// 用枚舉類定義,Good
public enum CouponType {
// 現金券
@SerializedName("1")
CASH,
// 抵用券
@SerializedName("2")
DEBIT,
// 折扣券
@SerializedName("3")
DISCOUNT
}
// 用整型定義,Bad
public static final int TYPE_CASH = 1; // 現金券
public static final int TYPE_DEBIT = 2; // 抵扣券
public static final int TYPE_DISCOUNT = 3; // 折扣券
12. 文字大小的單位統一用sp,元素大小的單位統一用dp。
13. 應用中的字符串統一在strings.xml中定義,然后在代碼和布局文件中引用。
14. 顏色值統一在colors.xml中定義,然后在代碼和布局文件中引用。另外,不要在代碼和布局文件中引用系統的顏色,除了透明。
命名規范
1. 包命名
例如,我的KAndroid項目的Model模塊包名如下:me.keeganlee.kandroid.model
2. 類和接口命名
以下為幾種常用類的命名:
3. 方法命名
以下為幾種常用方法的命名:
4. 控件縮寫
控件
縮寫
控件
縮寫
TextView
txt
EditText
edt
Button
btn
ImageButton
ibtn
ImageView
img
ListView
list
RadioGroup
group
RadioButton
rbtn
ProgressBar
progress
SeekBar
seek
CheckBox
chk
Spinner
spinner
TableLayout
table
TableRow
row
LinearLayout
llayout
RelativeLayout
rlayout
ScrollView
scroll
SearchView
search
TabHost
host
TabWidget
widget
5. 常量命名
public final static int PAGE_SIZE = 20;
6. 變量命名
private TextView headerTitleTxt; // 標題欄的標題
private Button loginBtn; // 登錄按鈕
private CouponBO couponBO; // 券實例
7. 控件id命名
<!-- 這是標題欄的標題 -->
<TextView
android:id="@+id/txt_header_title"
... />
<!-- 這是登錄按鈕 -->
<Button
android:id="@+id/btn_login"
... />
8. layout命名
以下為幾種常用的組件類型命名:
9. strings的命名
以下為幾種常用的命名:
10. colors的命名
11. drawable的命名
12. 動畫文件命名
注釋規范
1. 文件頭注釋
/**
* Copyright (c) 2015. Keegan小鋼 Inc. All rights reserved.
*/
2. 類和接口注釋
/**
* 類或接口的描述信息
*
* @author ${USER}
* @date ${DATE}
*/
3. 方法注釋
/**
* 登錄
*
* @param loginName 登錄名
* @param password 密碼
* @param listener 回調監聽器
*/
public void login(String loginName, String password, ActionCallbackListener<Void> listener);
4. 變量和常量注釋
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; // 券簡介
結束語