Android開發(fā)命名規(guī)范

本文為 Crocutax 原創(chuàng) , 轉載請注明出處 http://www.crocutax.com

核心原則

  • 見名知意
  • 嚴格執(zhí)行命名規(guī)范
  • 全局禁用拼音

分包規(guī)范

包名全部小寫,連續(xù)的單詞只是簡單地連接起來,不使用下劃線。 采用反域名命名規(guī)則,全部使用小寫字母。一級包名為com,二級包名為xxx(公司名),三級包名根據(jù)應用進行命名,四級包名為模塊名或層級名。 例如:com.longke.qq.activity

com.xxx.activity    Activity類
com.xxx.service     Service
com.xxx.receiver    BroadCastReceiver
com.xxx.provider    ContentProvider
com.xxx.base        基類
com.xxx.adapter     ViewPager/RecyclerView等適配器
com.xxx.util        各種StringUtil,NetUtil,BitmapUtil等工具類 
com.xxx.view        自定義view/第三方開源控件
com.xxx.bean        各種實體類,下面可以再細分VO,PO,DTO
com.xxx.db          數(shù)據(jù)庫操作類

注意:

  • 部分特殊的第三方SDK,比如微信支付,Zxing,訊飛語言等對如果對包位置有特殊要求的,按第三方要求來
  • MyApplication等全局相關的配置類,放在包名目錄下

命名規(guī)范

Activity / Fragment / Adapter / Bean...

類名由一個或多個單詞組成,采用 大駝峰命名法

同一界面,不同類型的類,前綴必須一樣,比如:HomePageActivity,HomePageFragment,HomePageListAdapter...

Listener

Listener接口監(jiān)聽事件的命名規(guī)范:以On開頭Listener作為后綴。
具體:On+事件描述+Listener

例如:點擊事件:OnClickListener

對應的調用方法:setOnClickListener()

常量

常量命名采用 : 全大寫 + 下劃線方式例如:

public static final int LOGIN_FLAG = 1 ;

intent標記的key以INTENT 開頭 , 各個單詞以_隔開,例如:

public static final String INTENT_CAR_ID = "intentCarId";

變量

變量以小駝峰式命名法,不同類型的變量又有不同的命名方式.

私有成員變量

必須以"m"開頭 + 變量名

例如:
private int mThemeId = 0;
private boolean mIsOpen;
private List<Strng> mUrlList;

靜態(tài)成員變量

必須以"s"開頭 + 變量名

private static boolean sIsOpen = false;

局部變量

小駝峰命名法

public String getUserName(){
    String userName = getUserNameFromDB();
    ...
}

方法

方法命名規(guī)則采用小駝峰命名法例如:

onCreate() / onResume() / onRun()
getXX()返回某個值的方法
initXX() 初始化相關方法,比如初始化布局:initView()
checkXX()和isXX()方法為boolean值的時候使用is或者check為前綴
saveXX() 保存數(shù)據(jù)
clearXX()和removeXX() 清除數(shù)據(jù)
updateXX() 更新數(shù)據(jù)
processXX() 對數(shù)據(jù)進行處理
dispalyXX() 顯示某某信息

對于方法的其他一些規(guī)范

  • 方法的參數(shù)盡可能不超過4個,多余4個考慮采用builder模式或者JavaBean形式
  • 注意單一職責原則
  • 方法盡量避免返回null,可以考慮拋異?;蚩諗?shù)據(jù),比如Collections.emptyList()

類聲明規(guī)范

區(qū)塊劃分

建議使用注釋將源文件分為明顯的區(qū)塊,區(qū)塊劃分如下

常量聲明區(qū)
UI控件成員變量聲明區(qū)
普通成員變量聲明區(qū)
內(nèi)部接口聲明區(qū)
初始化相關方法區(qū)
事件響應方法區(qū)
普通邏輯方法區(qū)
重載的邏輯方法區(qū)
生命周期回調方法區(qū)
內(nèi)部類聲明區(qū)

類成員排列通用規(guī)則

按照發(fā)生的先后順序排列
常量按照使用先后排列
UI控件成員變量按照layout文件中的先后順序排列
普通成員變量按照使用的先后順序排列
方法基本上都按照調用的先后順序在各自區(qū)塊中排列
相關功能作為小區(qū)塊放在一起(或者作為一個封裝體引入)
重載方法永不分離,當一個類有多個構造函數(shù),或是多個同名方法,這些函數(shù)/方法應該按順序出現(xiàn)在一起,中間不要放進其它函數(shù)/方法。

資源文件命名規(guī)范

  • Activity對應的布局文件命名:XxxActivity--> activity_xxx.xml,比如MainActivity.java--> activity_main.xml
  • XML中控件命名:控件名界面名作用,例如:tv_homepage_name ,et_login_phone
  • 圖片命名,資源文件,控件id命名:activity名稱+功能名稱(背景bg,按鈕bt,圖片控件iv等)+自己名稱
  • RecyclerView / ListView中的item布局文件命名規(guī)范:以item_list作為前綴,以頁面名稱作為中綴,以列表描述作為后綴。具體:"item_list_"+頁面名稱+列表描述,例如:item_list_login_users.xml
  • Dialog布局文件命名規(guī)范:以dialog作為前綴,如果是通用的dialog則以common作為中綴以功能描述作為后綴。如果是對應頁面定制的dialog,以頁面描述作為中綴,dialog描述作為后綴。
    具體:

通用的dialog:dialog+common+功能描述,例如dialog_common_hint.xml

指定頁面的dialog:dialog+頁面名稱+功能描述,例如dialog_login_pwd_error.xml

values下文件命名

strings.xml

直接以對應的內(nèi)容的英文單詞組合命名.例如:

<string name="buy_ticket">購票</string>
<string name="region_list">景區(qū)列表</string>

colors.xml

具體:頁面+"_"+描述+顏色名稱,例如:
登錄頁面登錄按鈕字體顏色

<!--登錄頁面登錄按鈕字體顏色  -->  
<color name="login_activity_login_btn_text">#000000</color>

當然還有一些APP主題色,規(guī)范為:common_描述 ,例如:

<!--通用的item字體顏色  -->  
<color name="common_item_text">#33AACC</color>

dimens.xml文件命名

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>

drawable目錄下資源文件命名規(guī)范:

selector文件

以selector作為前綴,以某個頁面的作為中綴如果是多個頁面就以模塊名稱作為中綴或者是項目通用的就以common作為中綴,以功能描述作為后綴。

具體:
selector+頁面名稱+功能描述
selector+模塊名稱+功能描述
selector+common+功能描述

例如:
登陸頁面的確認按鈕:selector_login_confirm_btn.xml(login為頁面名稱)
所有支付模塊購買的按鈕:selector_pay_buy_btn.xml(buy為模塊名稱)
所有通用按鈕的背景:selector_common_btn_bg.xml

shape圖形

以shape 作為前綴,如果是通用的以common作為中綴,如果是單獨頁面的以頁面名稱作為中綴,或者以模塊名稱作為中綴,以功能描述作為后綴。

具體形式和selector一樣。

圖片資源

圖片資源命名規(guī)范 全部小寫,采用下劃線命名法,加前綴區(qū)分 命名模式:可加后綴 _small 表示小圖, _big 表示大圖,邏輯名稱可由多個單詞加下劃線組成,采用以下規(guī)則:

用途_模塊名_邏輯名稱
用途_模塊名_顏色
用途_邏輯名稱
用途_顏色  

icon圖片資源以ic開頭;
具體: 前綴+""+頁面名稱+""+描述 (如果頁面和描述一致的則不用重復)
歡迎頁面背景圖 bg_welcome.png

登錄頁面 登錄按鈕背景  bg_login_btn.png

btn_main_home.png 按鍵

divider_maket_white.png 分割線

ic_edit.png 圖標

bg_main.png 背景

btn_red.png 紅色按鍵

btn_red_big.png 紅色大按鍵

ic_head_small.png 小頭像

bg_input.png 輸入框背景

divider_white.png 白色分割線

anim目錄

全部小寫,采用下劃線命名法,加前綴區(qū)分。具體動畫采用以下規(guī)則:

模塊名_邏輯名稱
邏輯名稱

refresh_progress.xml
market_cart_add.xml
market_cart_remove.xml

普通的tween動畫采用如下命名方式:

// 前面為動畫的類型,后面為方向
動畫命名例子  描述
fade_in         淡入
fade_out        淡出
push_down_in    從下方推入
push_down_out   從下方推出
push_left       推向左方
slide_in_from_top   從頭部滑動進入
zoom_enter      變形進入
slide_in        滑動進入
shrink_to_middle    中間縮小

其他注意事項

  • 定義類或者接口 首行留空格,末尾不留;其次每個邏輯分區(qū)都要留單行空格(除普通常量定義外)
  • 定義類或者接口變量時,請使用基類或者頂層接口定義變量
  • 自行控制類、接口、及其成員的訪問權限,盡量縮小訪問權限
  • 類如果不是為擴展而設計的請加final修飾符
  • 遇到switch語句時,酌情考慮將每個case語句拆分成單個函數(shù)調用
  • 接口定義不加“I”前綴,實現(xiàn)添加"impl"后綴,如果有必要請?zhí)峁┠J的實現(xiàn)和其它實現(xiàn) (默認實現(xiàn):Default+接口名+impl,其它實現(xiàn) :具體擴展功能 + 接口 + impl)
  • 具有controller功能的類或者接口定義 都以 功能+“manager” 形式定義
  • 所有表示層設計的實體定義形式為 : 功能+“model”
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容