Android代碼規(guī)范
開始之前請詳細閱讀并遵守Android開發(fā)者代碼風格指南
不要使用拼音命名
名稱應簡潔而富于描述,使用完整單詞,避免使用縮寫(除非該縮寫被更廣泛使用,例如URL、HTML)
代碼中不要出現(xiàn)中文標點字符,例如:‘,’、‘:’
注釋中可以書寫中文標點字符,便于閱讀
注釋遵循英文寫作習慣,英文標點符號后空一格,避免句子緊湊
顏色色值的字母必須全部大寫
命名規(guī)則
1. 包命名
包名由小寫的字母組成,默認以com.huashengrun.android.betterus開頭,然后接上根據(jù)功能劃分的模塊名。
com.huashengrun.android.betterus.ui
com.huashengrun.android.betterus.ui.widget
2. 類和接口命名
名稱的首字母需要大寫,如果由多個單詞組成,那么每個單詞的首字母需要大寫,其他字母小寫。
class LoginActivity
interface OnClickListener
3. 方法的命名
采用駝峰命名法來命名。
public String getName()
public boolean isExist()
4. 變量的命名
采用駝峰命名法命名。
非公共的、非靜態(tài)的域變量用m前綴
靜態(tài)域變量用s前綴
集合類型的變量使用復數(shù)形式,若多種集合類型的變量存儲的是相同類型的對象,除了根據(jù)功能區(qū)分,也可以簡單通過集合類型來區(qū)分
public class User {
private int mId;
private static User sUser;
String mName;
protected int mAge;
public int level;
public List companies;
public List listScores;
public Score[] arrScores;
}
5. 常量的命名
常量需要聲明為final static形式,組成名稱的單詞必須全部大寫,單詞之間用下劃線隔開。
private static final int FADE_IN_TIME = 200;
6. 異常的命名
名稱必須以Exception結(jié)尾。
NullPointerException
7. 布局的命名
name是模塊的名稱或功能的描述,單詞必須全部小寫,單詞之間用下劃線隔開。
類型 | 模板 | 事例 |
---|---|---|
Activity | activity_name.xml | activity_main.xml |
Tab | tab_name.xml | tab_home.xml |
Dialog | dialog_name.xml | dialog_login.xml |
ListItem | item_name.xml | item_contact.xml |
8. ID的命名
組成名稱的單詞必須全部小寫,單詞之間用下劃線隔開,名稱不需要復雜的層級定位,只需要準確描述所代表控件的功能作用即可,通常我們在名稱前使用控件類型的縮寫前綴來避免重復起名的麻煩。
name是模塊的名稱或功能的描述。
類型 | 模板 | 事例 |
---|---|---|
TextView | tv_name.xml | tv_title.xml |
EditText | et_name.xml | et_mail.xml |
RelativeLayout | rlyt_name.xml | rlyt_login.xml |
LinearLayout | llyt_name.xml | llyt_login.xml |
控件類型縮寫對照表
控件類型 | 源文件中縮寫 | 資源文件中縮寫 |
---|---|---|
View | V | v |
Button | Btn | btn |
ImageButton | Ibtn | ibtn |
RadioButton | Rbtn | rbtn |
ToggleButton | Tbtn | tbtn |
CheckBox | Chk | chk |
TextView | Tv | tv |
EditText | Et | et |
ImageView | Iv | iv |
ListView | Lv | lv |
ProgressBar | Pbar | pbar |
ScrollView | Sclv | sclv |
RelativeLayout | Rlyt | rlyt |
LinearLayout | Llyt | llyt |
TableLayout | Tlyt | tlyt |
FrameLayout | Flyt | flyt |
9. 圖片的命名
name是模塊的名稱或功能的描述。
圖片名稱一般由模塊名稱/功能描述 + 后綴組成,后綴是可選的。
前綴 | 描述 | 示例 |
---|---|---|
ic_ | 圖標 | ic_launcher.png |
bg_ | 背景圖片 | bg_title.png |
sl_ | 狀態(tài)圖片 | sl_button.png |
后綴 | 描述 | 示例 |
---|---|---|
無 | 普通狀態(tài) | login.png |
_p | 按壓狀態(tài) | login_p.png |
_c | 選中狀態(tài) | login_c.png |
_d | 不可用狀態(tài) | login_d.png |
10. 其他資源命名
遵循見名知意的原則,組成名稱的單詞必須全部小寫,單詞之間用下劃線隔開。
歡迎
#FFFFFF
注釋
養(yǎng)成良好的注釋習慣,對提升自己的編程能力和團隊合作能力有很大的益處。
1. 文件注釋
源文件的開頭需要注釋說明當前的文件信息,包括文件名、作者、版本信息、日期、修改記錄等。
/*
* -----------------------------------------------------------------
* Copyright (C) 2007-2014, by HuaShengRun, Shenzhen, All rights reserved.
* -----------------------------------------------------------------
*
* File: RequestManager.java
* Author: JiongBull
* Version: 1.0
* Create: 2014-8-10
*
* Changes (from 2014-8-10)
* -----------------------------------------------------------------
* 2014-8-10 : 創(chuàng)建 RequestManager.java (JiongBull);
* -----------------------------------------------------------------
*/
2. 類注釋
在類的開頭添加類信息的描述.
/**
* 管理Volley的Request, 使用之前需要調(diào)用init()進行初始化.
*/
public class RequestManager {
}
3. 方法注釋
一般情況下需要為每個方法添加注釋,包括方法的功能描述,參數(shù)信息、返回值、異常信息等,有些約定俗成的方法可以不需要添加注釋,請參考約定俗成的說明。
/**
* 輸出日志.
*
* @param context Context
* @param logLevel 日志等級
* @param tag 標簽
* @param content 輸出內(nèi)容
* @param throwable 異常信息, 若沒有異常可為空
*/
private static void trace(final Context context, final int logLevel, final String tag, final String content, final Throwable throwable) {
...
}
4. 域變量和常量注釋
/**
* 日志的擴展名.
*/
public static final String LOG_EXTENSION = ".log";
/**
* 網(wǎng)絡請求隊列.
*/
private RequestQueue mRequestQueue;
5. 其他注釋
單行注釋
view.setImageResource(defaultImageResId); // 無圖片顯示默認圖片
區(qū)塊注釋
/* 網(wǎng)絡圖片添加漸變動畫 */
Resources resource = mContext.getResources();
final TransitionDrawable transitionDrawable =
new TransitionDrawable(new Drawable[] {
new ColorDrawable(android.R.color.transparent),
new BitmapDrawable(resource, bmpResponse)
});
view.setBackgroundResource(defaultImageResId);
view.setImageDrawable(transitionDrawable);
transitionDrawable.startTransition(RequestManager.FADE_IN_TIME);
6. XML注釋
約定俗成
1. get / set 方法的注釋
通過IDE工具批量生成域變量的 get / set 方法可以不用注釋。
2. 第三方庫生成代碼的注釋
第三方庫生成的代碼可以不用注釋,例如greenDao生成的代碼。
3. 通用類的注釋
通用類的公共方法應全部添加注釋。
4. 一般情況下的注釋
例如在activity、service等文件中,只需對關鍵的類變量進行注釋,方法建議全部添加注釋。