1.前言
本文檔參考了Google官方Android編碼風(fēng)格規(guī)范,盡量形成一個統(tǒng)一的風(fēng)格,見量知其意就可。
2.源文件基礎(chǔ)
2.1 文件名
源文件以其最頂層的類名來命名,大小寫敏感,文件擴(kuò)展名為.java。
2.2 文件編碼格式:UTF-8
源文件編碼格式為UTF-8
3.源文件結(jié)構(gòu):按順序包含以下
3.1 許可證或版權(quán)信息
如果一個文件包含許可證或版權(quán)信息,那么它應(yīng)當(dāng)被放在文件最前面。
3.2 package語句
3.3 import語句
3.3.1 import不要使用通配符
不要出現(xiàn)類似的import語句:import java.util.*;
3.3.2 不要換行
import語句不換行
3.3.3 順序和間距
import語句可分為以下幾組,按照這個順序,每組由一個空行分隔:
所有的靜態(tài)導(dǎo)入獨(dú)立成組
第三方的包,每個頂級包為一組,按字典排序,例如:android, com, junit, org
3.4 類聲明
3.4.1 只有一個頂級類
類聲明每個頂級類都在一個與它同名的源文件中
3.4.2 類成員順序
類的成員順序?qū)σ讓W(xué)性有很大的影響,但這也不存在唯一的通用法則,不同的類對成員的排序可能是不一樣的。 最重要的是,每個類應(yīng)該以某種邏輯去排序它的成員,維護(hù)者應(yīng)該要解釋這種排序的邏輯。比如:新的方法不能總是習(xí)慣性地添加的類的結(jié)尾,因?yàn)檫@樣是按照時(shí)間順序而非某種邏輯來排序的。
3.4.2.1 區(qū)塊劃分
?常量聲明區(qū)(static final類型數(shù)據(jù))
內(nèi)部接口聲明區(qū)
UI控件成員變量聲明區(qū)
普通成員變量聲明區(qū)
生命周期回調(diào)方法區(qū)(onCreate(), onResume(), onPause(), onDestroy())
初始化相關(guān)方法區(qū)
事件響應(yīng)方法區(qū)
普通邏輯方法區(qū)
重載的邏輯方法區(qū)
內(nèi)部類聲明區(qū)
3.4.2.2 類成員排列通用規(guī)則
?按照發(fā)生的先后順序排列
常量按照使用先后順序排列
UI控件成員變量按照layout文件中的先后順序排列
普通成員變量按照使用的先后順序排列
方法基本上都按照調(diào)用的先后順序在各自區(qū)塊中排列
相關(guān)功能作為小區(qū)塊放在一起(或者封裝掉)
3.4.2.3 重載:永不分離
當(dāng)一個類有多個構(gòu)造函數(shù),或是多個同名方法,這些函數(shù)/方法應(yīng)該按順序出現(xiàn)在一起,中間不要放進(jìn)其它函數(shù)/方法。
4.命名約定
4.1 類名
?類名都以UpperCamelCase(駝峰規(guī)則)風(fēng)格編寫
類名通常是名詞或名詞短語,接口名詞有時(shí)可能是形容詞或形容詞短語
名詞盡量避免縮寫,除非該縮寫是中所周知的,比如HTML, URL。如果類名稱中包含單詞縮寫,則單詞縮寫的每個字母均應(yīng)大寫。
安卓相關(guān)類命名規(guī)則:
類描述例如
Activity類Activity為后綴標(biāo)識歡迎頁面類WelcomeActivity
Fragment類Fragment為后綴標(biāo)識關(guān)于我們AboutFragment
Service類Service為后綴標(biāo)識
Receiver類Receiver為后綴標(biāo)識推送接收J(rèn)PushReceiver
Adapter類Adapter為后綴標(biāo)識行程列表適配器:TripListAdapter
工具方法類Util或Manager為后綴標(biāo)識(與系統(tǒng)或第三方的Utils區(qū)分)或功能+Util日期格式工具類:DateUtil, 日志工具類:LogUtil
4.2 變量命名規(guī)則
?在Activity等類中的全局變量均以小寫字母m開頭(有g(shù)eter/setter方法的實(shí)體類除外),后跟變量的英文描述(采用駝峰規(guī)則,如果由多個單詞拼接,則每個單詞首字母大寫),例如:private String mUserName;
在方法中的局部變量,直接以小寫字母開頭,例如:String userName;
在類中任何地方引用某變量時(shí),能立馬區(qū)分出該變量是一個全局變量還是局部方法變量
4.3 靜態(tài)變量、常量命名
字母全部大寫,單詞之間用”_”分隔開。 例如:public static final String APP_TITLE_TEXT = “app_title”;
4.4 Activity中的UI控件變量的命名
為避免控件和普通成員變量混淆,所有的空間命名軍采用如下規(guī)則:
m+View縮寫(或者全稱)+功能名稱,例如:
定義一個輸入用戶名的輸入框: EditText mEtUserName;
定義一個輸入密碼的輸入框: EditText mEtPassword;
定義一個等錄按鈕: Button mBtnLogin;
4.5 layout文件命名規(guī)則
?Activity中的layout定義:activity_描述.xml,如:activity_register.xml,表示注冊界面
Fragment中的layout定義:fragment_描述.xml,如:fragment_register.xml
Dialog中的layout定義:dialog_描述.xml,如:dialog_login.xml,表示登錄的對話框
Popup Window中的layout定義:ppw_描述.xml,如:ppw_info.xml
列表項(xiàng)定義:item_描述.xml,例如:item_city.xml
包含項(xiàng)命名:模塊_(位置)描述.xml,例如:activity_main_bottom.xml
通用的包含項(xiàng)命名采用:項(xiàng)目名稱縮寫_描述.xml,例如:hm_header.xml
4.6 資源文件命名規(guī)則
?用途_模塊名_邏輯名稱
用途_模塊名_顏色
用途_邏輯名稱
用途_顏色
說明:用途也指控件類型(具體見UI控件縮寫表) 例如:
btn_main_home.png 按鍵
divider_maket_white.png 分割線
ic_edit.png 圖標(biāo)
bg_main.png 背景
btn_red.png 紅色按鍵
btn_red_big.png 紅色大按鍵
ic_head_small.png 小頭像
bg_input.png輸入框背景
divider_white.png白色分割線
sel_edit.xml selector類型的edit圖標(biāo)
名稱功能
btn_xx按鈕圖片使用btn_整體效果(selector)
btn_xx_normal按鈕圖片使用btn_正常情況效果
btn_xx_pressed按鈕圖片使用btn_點(diǎn)擊時(shí)候效果
btn_xx_focusedstate_focused聚焦效果
btn_xx_disabledstate_enabled (false)不可用效果
btn_xx_checkedstate_checked選中效果
btn_xx_selectedstate_selected選中效果
btn_xx_hoveredstate_hovered懸停效果
btn_xx_checkablestate_checkable可選效果
btn_xx_activatedstate_activated激活的
btn_xx_windowfocusedstate_window_focused
bg_head背景圖片使用bg功能說明
def_search_cell默認(rèn)圖片使用def功能說明
ic_more_help圖標(biāo)圖片使用ic功能說明
seg_list_line具有分隔特征的圖片使用seg功能說明
sel_ok選擇圖標(biāo)使用sel功能說明
4.7 values中name的命名
類別命名示例
strings使用下劃線命名法,規(guī)則:
1.模塊名+邏輯名稱
2.通用字符串以通用英文字符串命名
friend_title: 好友模塊標(biāo)題欄?
dialog_title: 彈出框標(biāo)題
ok: 確定
cancel:取消
colors使用下劃線命名法,規(guī)則:
1.模塊名+邏輯名稱
2.顏色
3.多種狀態(tài)的顏色,以sel為前綴
friend_info_bgfriend_bg: 好友信息背景色?
transparent: 透明色
sel_main_btn:包含各種狀態(tài)的顏色
styles使用駝峰命名法,參照系統(tǒng)定義的styleRectBlueButton
RectBlueButton.Large
4.8 layout文件中的控件id命名
格式為:控件類別型縮寫_模塊名稱_功能簡易描述
在登錄界面對應(yīng)的layout文件中,有個輸入用戶名的輸入框,則定義為:
?? ? @+id/et_login_username
在注冊界面對應(yīng)的layout文件中,有個提交按鈕,則定義為:
?? ? @+id/btn_register_submit
在我的好友列表里的ListView,則定義為:
?? ? @+id/lv_friends_list
4.9 UI控件縮寫表
控件縮寫例如
LinearLayoutllmLlLogin
RelativeLayoutrlmRlLogin
FrameLayoutflmFlLogin
TableLayouttlmTlLoing
ButtonbtnmBtnLogin
ImageButtonibtnmIbtLogin
TextViewtvmTvName
EditTextetmEtPwd
ListViewlvmLvFriends
ImageViewivmIvAvatar
GridViewgvmGvPhoto
RecyclerViewrvmRvFriends
ProgressBarpbmPbUpload
SeekBarsbmSbUpload
WebViewwvmWvComm