【轉(zhuǎn)載】android命名規(guī)范

無論是哪種編程語(yǔ)言的學(xué)習(xí)笆凌,我們的命名都要有一定的規(guī)范才能更好的進(jìn)行團(tuán)隊(duì)協(xié)作赊窥,更好的進(jìn)行代碼的的二次開發(fā)靶橱。所以在這里轉(zhuǎn)載了這篇文章佳遂,希望自己以后的代碼能夠規(guī)范营袜,也希望大家的代碼能夠命名規(guī)范,而且沒有bug~
標(biāo)識(shí)符命名法
標(biāo)識(shí)符命名法最要有四種:

1. 駝峰(Camel)命名法:

又稱小駝峰命名法丑罪,除首單詞外荚板,其余所有單詞的第一個(gè)字母大寫。

2. 帕斯卡(pascal)命名法:

又稱大駝峰命名法吩屹,所有單詞的第一個(gè)字母大寫

3. 下劃線命名法:單詞與單詞間用下劃線做間隔跪另。個(gè)人覺得標(biāo)識(shí)符命名原則:**盡可能的用最少的字符而又能完整的表達(dá)標(biāo)識(shí)符的含義。

**英文縮寫原則:1 較短的單詞可通過去掉“元音”形成縮寫2 較長(zhǎng)的單詞可取單詞的頭幾個(gè)字母形成縮寫3 此外還有一些約定成俗的英文單詞縮寫.下面為常見的英文單詞縮寫:

常見單詞 對(duì)應(yīng)的簡(jiǎn)寫
icon ic (主要用在app的圖標(biāo))
color cl(主要用于顏色值)
divider di(主要用于分隔線煤搜,不僅包括Listview中的divider免绿,還包括普通布局中的線)
selector sl(主要用于某一view多種狀態(tài),不僅包括Listview中的selector擦盾,還包括按鈕的selector)
average avg(主要用于平均數(shù))
background Bg(主要用于布局和子布局的背景)
buffer buf
control ctrl
delete del(刪除)
document doc(文檔)
error err(錯(cuò)誤)
escape esc
increment inc
infomation info(信息)
initial init(初始化)
image img(圖片)
Internationalization I18N
length len(長(zhǎng)度)
library lib(庫(kù)针姿,資源)
message msg(信息,側(cè)重于消息)
password- pwd(密碼)
position pos(位置)
server srv(服務(wù))
string str(字符串)
temp tmp(臨時(shí)變量)
window wnd(win)(窗口)

程序中使用單詞縮寫原則:不要用縮寫厌衙,除非該縮寫是約定俗成的距淫。
命名規(guī)范:

  • 1 包(packages): 采用反域名命名規(guī)則,全部使用小寫字母婶希。一級(jí)包名為com榕暇,二級(jí)包名為xx(可以是公司或則個(gè)人的隨便),三級(jí)包名根據(jù)應(yīng)用進(jìn)行命名喻杈,四級(jí)包名為模塊名或?qū)蛹?jí)名
命名規(guī)范 包名中包含
com.xx.應(yīng)用名稱縮寫.activities 頁(yè)面用到的Activity類(activities層級(jí)名用戶界面層)
com.xx.應(yīng)用名稱縮寫.base 頁(yè)面中每個(gè)Activity類共享的可以寫成一個(gè)i額BaseActivity類 (基礎(chǔ)共享的類)
com.xx.應(yīng)用名稱縮寫.adapter 頁(yè)面用到的Adapter類 (適配器的類)
com.xx.應(yīng)用名稱縮寫.tools 此包中包含:公共工具方法類(tools模塊名)
com.xx.應(yīng)用名稱縮寫.bean(或則 com.xx.應(yīng)用名稱縮寫.unity ) 此包中包含:元素類
com.xx.應(yīng)用名稱縮寫.db 數(shù)據(jù)庫(kù)操作類
com.xx.應(yīng)用名稱縮寫.view(或則 com.xx.應(yīng)用名稱縮寫.ui ) 自定義的View類等
com.xx.應(yīng)用名稱縮寫.service Service服務(wù)
com.xx.應(yīng)用名稱縮寫.broadcast Broadcast服務(wù)
  • 2 類(classes):名詞彤枢,采用大駝峰命名法,盡量避免縮寫筒饰,除非該縮寫是眾所周知的缴啡,比如HTML,URL,如果類名稱中包含單詞縮寫瓷们,則單詞縮寫的每個(gè)字母均應(yīng)大寫业栅。

|類的類型|后綴表示|例子|
|--|--|
|activity類|Aty或者Activity為后綴標(biāo)識(shí)| 歡迎頁(yè)面類WelcomeActivity
|Adapter類|Adp或者Adapte 為后綴標(biāo)識(shí)|新聞詳情適配器NewDetailAdapter
|解析類|Hlr為后綴標(biāo)識(shí)|首頁(yè)解析類HomePosterHlr
|公共方法類|Tools或Manager為后綴標(biāo)識(shí)|線程池管理類:ThreadPoolManager日志工具類:LogTools|
|數(shù)據(jù)庫(kù)類| 以DBHelper后綴標(biāo)識(shí)|新聞數(shù)據(jù)庫(kù):NewDBHelper
|Service類|以Service為后綴標(biāo)識(shí)|時(shí)間服務(wù)TimeService
|BroadcastReceive類| 以Broadcast為后綴標(biāo)識(shí)|時(shí)間通知TimeBroadcast
|ContentProvider |以Provider為后綴標(biāo)識(shí)
|直接寫的共享基礎(chǔ)類 |以Base開頭|BaseActivity,BaseFragment

  • 3 接口(interface):命名規(guī)則與類一樣采用大駝峰命名法秒咐,多以able或ible結(jié)尾,如interface Runnable;interface Accessible碘裕。

  • 4 方法(methods):動(dòng)詞或動(dòng)名詞携取,采用小駝峰命名法例如:onCreate(),run()

命名形式 解釋
initXX() 初始化相關(guān)方法,使用init為前綴標(biāo)識(shí),如初始化布局initView()
isXX() checkXX()方法返回值為boolean型的請(qǐng)使用is或check為前綴標(biāo)識(shí)
getXX() 返回某個(gè)值的方法帮孔,使用get為前綴標(biāo)識(shí)
processXX() 對(duì)數(shù)據(jù)進(jìn)行處理的方法雷滋,盡量使用process為前綴標(biāo)識(shí)
displayXX() 彈出提示框和提示信息,使用display為前綴標(biāo)識(shí)
saveXX() 與保存數(shù)據(jù)相關(guān)的文兢,使用sav為e前綴標(biāo)識(shí)
resetXX() 對(duì)數(shù)據(jù)重組的晤斩,使用reset前綴標(biāo)識(shí)
clearXX() 清除數(shù)據(jù)相關(guān)的
removeXXX() 清除數(shù)據(jù)相關(guān)的
drawXXX() 繪制數(shù)據(jù)或效果相關(guān)的,使用draw前綴標(biāo)識(shí)
  • 5 變量(variables)采用小駝峰命名法姆坚。

類中控件名稱必須與xml布局id保持一致澳泵。用統(tǒng)一的量詞通過在結(jié)尾處放置一個(gè)量詞,就可創(chuàng)建更加統(tǒng)一的變量旷偿,它們更容易理解烹俗,也更容易搜索爆侣。例如萍程,請(qǐng)使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer兔仰。

量詞列表 量詞后綴說明
First 一組變量中的第一個(gè)
Last 一組變量中的最后一個(gè)
Next 一組變量中的下一個(gè)變量
Prev 一組變量中的上一個(gè)
Cur 一組變量中的當(dāng)前變量
  • 6 常量(Constants)全部大寫,采用下劃線命名法.例如:MIN_WIDTH

  • 7 資源文件(圖片drawable文件夾下):全部小寫茫负,采用下劃線命名法,加前綴區(qū)分命名模式:activity名稱邏輯名稱/common邏輯名稱
    如果有多種形態(tài)如按鈕等除外如btn_xx.xml(selector)

btn_xx 按鈕圖片使用btn_整體效果(****selector****)
btn_xx_normal 按鈕圖片使用btn_正常情況效果
btn_xx_press 按鈕圖片使用btn_點(diǎn)擊時(shí)候效果
bg_head 背景圖片使用bg_功能_說明
def_search_cell 默認(rèn)圖片使用def_功能_說明
icon_more_help 圖標(biāo)圖片使用icon_功能_說明
seg_list_line 具有分隔特征的圖片使用seg_功能_說明
sel_ok 選擇圖標(biāo)使用sel_功能_說明

命名后綴:

unit 在使用xml的tilemode來配圖片時(shí)乎赴,element圖片使用此后綴
nor 圖片的狀態(tài)忍法,代表普通狀態(tài)
圖片的狀態(tài),代表高亮狀態(tài)
press 圖片的狀態(tài)榕吼,代表按下狀態(tài)
select 圖片的狀態(tài)饿序,代表其所占的view被選中
unselect 圖片的狀態(tài),代表其所占的view沒有被選中

8 資源布局文件(XML文件(layout布局文件)):
全部小寫羹蚣,采用下劃線命名法
1).contentview命名, Activity默認(rèn)布局原探,以去掉后綴的Activity類進(jìn)行命名。不加后綴:
功能模塊.xml
例如:main.xml顽素、more.xml咽弦、settings.xml
或則:activity_功能模塊.xml 例如:activity_main.xml、activity_more.xml
2).Dialog命名:dialog_描述.xml
例如:dlg_hint.xml
2).PopupWindow命名:ppw_描述.xml
例如:ppw _info.xml
3). 列表項(xiàng)命名listitem_描述.xml
例如:listitem_city.xml
4).包含項(xiàng):include_模塊.xml
例如:include_head.xml胁出、include_bottom.xml
5).a(chǎn)dapter的子布局:功能模塊_item.xml
例如:main_item.xml型型、
9動(dòng)畫文件(anim文件夾下):全部小寫,采用下劃線命名法全蝶,加前綴區(qū)分闹蒜。
//前面為動(dòng)畫的類型寺枉,后面為方向

動(dòng)畫命名例子 規(guī)范寫法
fade_in
fade_out
push_down_in 從下方推入
push_down_out 從下方推出
push_left 推像左方
slide_in_from_top 從頭部滑動(dòng)進(jìn)入
zoom_enter 變形進(jìn)入
slide_in 滑動(dòng)進(jìn)入
shrink_to_middle 中間縮小
  • 10 資源ID(resourcesid):大小寫規(guī)范與方法名一致,采用小駝峰命名法嫂用。命名規(guī)范為“資源控件的縮寫 名”+“變量名”型凳。注意:頁(yè)面控件名稱應(yīng)該和控件id名保持一致
    ** strings.xml,colors.xml等中的id命名:**
    命名模式:activity名稱功能模塊名稱邏輯名稱/activity名稱邏輯名稱/common邏輯名稱
    strings.xml中嘱函,使用activity名稱注釋甘畅,將文件內(nèi)容區(qū)分開來
  • 11 layout中的id命名
    命名模式為:view縮寫_模塊名稱_view的邏輯名稱
    view的縮寫詳情如下:
控件名稱 一般的縮寫
LayoutView lv
RelativeView rv
TextView tv
Button btn
ImageButton iBtn
ImageView imgView 或則 iv
CheckBox chk
RadioButton rdoBtn
analogClock anaClk
DigtalClock dgtClk
DatePicker dtPk
EditText edtTxt
TimePicker tmPk
toggleButton tglBtn
ProgressBar proBar
SeekBar skBar
AutoCompleteTextView autoTxt
ZoomControls zmCtl
VideoView vdoVi
WdbView webVi
RantingBar ratBar
Tab tab
Spinner spn
Chronometer cmt
ScollView sclVi
TextSwitch txtSwt
ImageSwitch imgSwt
listView lv
ExpandableList epdLt
MapView mapVi
  • 12.activity中的view變量命名
    命名模式為:邏輯名稱+view縮寫
    建議:如果layout文件很復(fù)雜,建議將layout分成多個(gè)模塊往弓,每個(gè)模塊定義一個(gè)moduleViewHolder疏唾,其成員變量包含所屬view
  • 13.styles.xml:將layout中不斷重現(xiàn)的style提煉出通用的style通用組件,放到styles.xml中函似;
  • 14.使用layer-list和selector

Android編碼規(guī)范建議(別人弄的覺得蠻有道理)

  1. java代碼中不出現(xiàn)中文槐脏,最多注釋中可以出現(xiàn)中文
  2. 局部變量命名、靜態(tài)成員變量命名
    只能包含字母撇寞,單詞首字母除第一個(gè)外顿天,都為大寫,其他字母都為小寫
  3. 常量命名
    只能包含字母和蔑担,字母全部大寫牌废,單詞之間用隔開
  4. 圖片盡量分拆成多個(gè)可重用的圖片
  5. 服務(wù)端可以實(shí)現(xiàn)的,就不要放在客戶端
  6. 引用第三方庫(kù)要慎重啤握,避免應(yīng)用大容量的第三方庫(kù)鸟缕,導(dǎo)致客戶端包非常大
  7. 處理應(yīng)用全局異常和錯(cuò)誤,將錯(cuò)誤以郵件的形式發(fā)送給服務(wù)端
  8. 圖片的.9處理
  9. 使用靜態(tài)變量方式實(shí)現(xiàn)界面間共享要慎重
  10. Log(系統(tǒng)名稱模塊名稱接口名稱排抬,詳細(xì)描述)
  11. 單元測(cè)試(邏輯測(cè)試懂从、界面測(cè)試)
  12. 不要重用父類的handler,對(duì)應(yīng)一個(gè)類的handler也不應(yīng)該讓其子類用到蹲蒲,否則會(huì)導(dǎo)致message.what沖突
  13. activity中在一個(gè)View.OnClickListener中處理所有的邏輯
  14. strings.xml中使用%1$s實(shí)現(xiàn)字符串的通配
  15. 如果多個(gè)Activity中包含共同的UI處理番甩,那么可以提煉一個(gè)CommonActivity,把通用部分叫由它來處理届搁,其他activity只要繼承它即可
  16. 使用button+activitgroup實(shí)現(xiàn)tab效果時(shí)缘薛,使用Button.setSelected(true),確保按鈕處于選擇狀態(tài)咖祭,并使activitygroup的當(dāng)前activity與該button對(duì)應(yīng)
  17. 如果所開發(fā)的為通用組件掩宜,為避免沖突,將drawable/layout/menu/values目錄下的文件名增加前綴
  18. 數(shù)據(jù)一定要效驗(yàn)么翰,例如
    字符型轉(zhuǎn)數(shù)字型牺汤,如果轉(zhuǎn)換失敗一定要有缺省值;
    服務(wù)端響應(yīng)數(shù)據(jù)是否有效判斷

最后浩嫌,我想說檐迟,命名規(guī)范不要去局限于這些規(guī)則补胚,要記住規(guī)范的核心就是簡(jiǎn)單而且便于理解,所以說多種命名規(guī)范只要能夠有利于自己的學(xué)習(xí)追迟,就ok了溶其、
附上相應(yīng)的規(guī)范文檔
Google Java編程風(fēng)格規(guī)范
Google C++ 風(fēng)格指南
Google Objective-C 風(fēng)格指南
Python 風(fēng)格指南
Shell 風(fēng)格指南

我是勤勞的搬運(yùn)工。原文地址 http://gold.xitu.io/entry/566397c900b01b7852d35c03

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敦间,一起剝皮案震驚了整個(gè)濱河市瓶逃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌廓块,老刑警劉巖厢绝,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異带猴,居然都是意外死亡昔汉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門拴清,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶病,“玉大人,你說我怎么就攤上這事口予÷χ埽” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵苹威,是天一觀的道長(zhǎng)昆咽。 經(jīng)常有香客問我驾凶,道長(zhǎng)牙甫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任调违,我火速辦了婚禮窟哺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘技肩。我一直安慰自己且轨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布虚婿。 她就那樣靜靜地躺著旋奢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪然痊。 梳的紋絲不亂的頭發(fā)上至朗,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音剧浸,去河邊找鬼锹引。 笑死矗钟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嫌变。 我是一名探鬼主播吨艇,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼腾啥!你這毒婦竟也來了东涡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤倘待,失蹤者是張志新(化名)和其女友劉穎软啼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體延柠,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祸挪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贞间。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贿条。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖增热,靈堂內(nèi)的尸體忽然破棺而出整以,到底是詐尸還是另有隱情,我是刑警寧澤峻仇,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布公黑,位于F島的核電站,受9級(jí)特大地震影響摄咆,放射性物質(zhì)發(fā)生泄漏凡蚜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一吭从、第九天 我趴在偏房一處隱蔽的房頂上張望朝蜘。 院中可真熱鬧,春花似錦涩金、人聲如沸谱醇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)副渴。三九已至,卻和暖如春全度,著一層夾襖步出監(jiān)牢的瞬間煮剧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轿秧,地道東北人中跌。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像菇篡,于是被迫代替她去往敵國(guó)和親漩符。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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