Android代碼規(guī)范-命名規(guī)范

編碼規(guī)范對于程序員尤為重要峦阁,可以有效的幫助我們進行code review,提高代碼的可讀性,讓其他人更快的理解代碼婶博。
一個軟件的生命周期中,80%的花費都在于維護以及新功能的迭代荧飞,很多的時候都需要閱讀代碼凡人,讀自己以前寫的代碼,讀別人寫的代碼叹阔,這樣規(guī)范代碼的優(yōu)勢就顯示出來了挠轴,符合規(guī)范的代碼可以讓人簡單快速的理解理解代碼的意圖。
代碼規(guī)范先從命名規(guī)范開始耳幢,Android的命名規(guī)范主要涉及:

  • Java源代碼
  • xml文件
  • 圖片等資源文件

先從Java源代碼開始說起岸晦,要說Java源代碼不得不先說下包名的命名規(guī)范。

包名

Android包名的命名規(guī)則睛藻,Andorid的包名一般采用域名的反轉(zhuǎn)启上,單詞全小寫。
比如域名為www.example.com的包名為com.example,省略www修档。
包名開始是一個頂級域名碧绞,比如com,cn,org等,包名使用.做為分隔符吱窝。第二位一般是二級域名讥邻,也可以根據(jù)不同機構(gòu)各自的命名。
后面的命名可以用部門院峡,項目等進行區(qū)分(也可以沒有),例如:

com.example.project

在項目內(nèi)可以根據(jù)功能不同兴使,按照模塊劃分不同的包名,com.example.project.user表示用戶模塊。
也可以根據(jù)層級的不同而劃分不同的包名,比如:com.example.prokect.activity,就是Acitivity相關的包照激。
當然也可以在不同層級里面再按照模塊劃分包名发魄,比如:com.example.project.activity.user,表示和用戶有關的Activity。


總結(jié),包名一般是以反轉(zhuǎn)域名開始励幼,后面跟有項目名稱(縮寫汰寓,也可以沒有)。
后面可以采用的區(qū)分包名方式:

  • 按照模塊 com.example.project.user
  • 按照層級區(qū)分 com.example.project.activity
  • 層級下也可以在區(qū)分模塊 com.example.project.activity.user

類和接口

類名是一個或多個單詞組成苹粟,采用大駝峰命名有滑,盡量要使類名簡潔且利于描述,例如:SignInActivity,類名規(guī)則如下:

  • 大駝峰命名
  • 簡潔而富有表達性
  • 盡量不使用縮寫(廣泛使用的單詞除外嵌削,比如URL,XML...)
  • 多單詞中采用 名詞+動詞的方式命名: LocationManage
  • 對于縮寫單詞要全部大寫比如:XMLManage

一個類如果繼承了Android的組件草丧,需在使用該組件的名稱作為后綴表窘,這樣容易區(qū)分該類的作用偶妖,比如:SgnInActivity,UserInfoFragment,FileUploadService...
接口一般使用I開頭螟蒸,采用大駝峰命名規(guī)則,比如:IPullToRefresh艇劫。

變量

Android變量分為三種:成員變量,靜態(tài)變量和常量吼驶。

  • 成員變量

成員變量一般采用小駝峰命名規(guī)則,第一單詞的首字母小寫港准,其后的首字母大寫旨剥。變量名一般不使用_$開頭。例如:

private Intent cropIntent;

變量名應簡短且易于描述浅缸,選用規(guī)則盡量簡單轨帜,易于記憶和聯(lián)想。
盡量避免單個字符的變量名衩椒,除非是用于一次性的臨時變量,臨時的整形變量一般命名為** i,j,k,m,n蚌父。字符型的變量一般使用c,d,e**。
對于View變量的命名規(guī)則毛萌,如果View是一個單詞的苟弛,采用第一個單詞小寫的方式+對應View的描述進行,例如:

private View viewUserInfo;

如果是兩個單詞組成的View,比如:TextView,一般采用縮寫的方式,例如:

private TextView tvUserName;

一般情況下Button縮寫為:btn阁将。

  • 靜態(tài)變量

為了可以很方便的區(qū)分靜態(tài)變量膏秫,靜態(tài)變量的命名一般采用小寫的s開頭,后面單詞的命名規(guī)則和成員變量保持一致做盅,例如:

private static Map<String, String> sCacheStrings;

  • 常量

常量命名規(guī)則一般是所有的單詞都是大寫缤削,中間使用_(下劃線)分割,例如:

private static final float SCALE_RATE = 1.25f;

代碼中不允許出現(xiàn)單獨的字符串或數(shù)字常量吹榴,比如xx.equals("1"),單獨的字符串或數(shù)字不利于理解和后期的維護亭敢。如果需要使用數(shù)據(jù)或字符,請按照他們的含義封裝成靜態(tài)常量图筹,或者使用枚舉帅刀,for語句除外让腹。

方法

方法命名規(guī)則采用小駝峰命名法例如:onCreate(),onRun(),方法名一般采用動詞或者動名詞扣溺。
一般使用的方法名前綴骇窍。

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

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

  • 方法的參數(shù)盡可能不超過4個锥余,需要更多的參數(shù)的時候可以是使用類的作為方法的參數(shù)
  • 方法參數(shù)中盡量少使用boolean,使用boolean傳參不利于代碼的閱讀
  • 方法盡量不超過15行像鸡,方法過長,說明當前方法業(yè)務邏輯過于復雜哈恰,需要進行方法拆分
  • 一個方法只做一件事,
  • 如果一個方法返回的是一個錯誤碼志群,可以使用異常
  • 不使用try catch 處理業(yè)務邏輯
  • 盡可能不實用null着绷,替代為異常或者使用空的變量锌云,比如Collections.emptyList()

Layout

Layout的命名規(guī)則需要和使用他們的組件對應荠医,方便查找和維護,比如我們在創(chuàng)建一個用戶信息的UserInfoActivity桑涎,對應的Layout的命名就應該是activity_user_info.xml彬向。
對應Andorid組件的Layout命名規(guī)則:

  • Activity -> activity_user_info.xml
  • Fragment -> fragment_sign_up.xml
  • Dialog -> dialog_change_password.xml
  • AdapterView Item -> item_user.xml
  • Layout文件只是布局文件的一部分 -> partial_stats_bar.xml

string和color

項目中使用的string和color的值原則上都是必須放在strings.xmlcolors.xml中,不要放在Java代碼中攻冷,這樣的好處是可復用娃胆,提高維護性,減少非必要的代碼等曼。
xml的資源命名,字母全部小寫里烦,多個單詞之間使用_(下劃線)分割.
比如:

<string name="app_name">example</string>

建議color的命名中體現(xiàn)其ARGB值,比如:

<color name="color_feb749">#feb749</color>
這樣的寫法對于代碼提示更加的友好,有利于對照標注圖查找顏色值禁谦。

id命名

layout中使用的id的單詞要全部小寫胁黑,單詞之間使用下劃線分割,使用名詞或者名詞詞組州泊,應該通過id的命名可以直接理解當前的View要實現(xiàn)的功能.
例如:

@+id/tv_user_name_show

id命名的第一個單詞使用View的縮寫丧蘸,如果View只是一個單詞,縮寫就是當前單詞遥皂。一般Button的縮寫為:btn力喷。

Drawable命名

Drawable的命名規(guī)則根據(jù)使用的控件來命名,控件的縮寫在前面渴肉,后面使用表示其功能的一個或者多個單詞冗懦,中間使用使用_下劃線分割。比如:

  • Action bar使用ab_仇祭,比如:ab_stacked.png
  • Button 使用btn_
  • Dialgo 使用dialog_
  • Divide 使用 divider_
  • Icon 使用 ic_
  • Menu 使用menu_
  • Notification使用 notification_
  • Tabs 使用tab_

Drawable是有多個狀態(tài)的披蕉,在命名中體現(xiàn)出狀態(tài)的不同,比如:

  • Normal 對應_normal結(jié)尾,比如btn_order_normal.9.png
  • Pressed 對應_pressed結(jié)尾
  • Focused 對應_focused結(jié)尾
  • Disabled 對應_disabled結(jié)尾
  • Selected 對應_selected結(jié)尾

其他資源文件的命名需要遵守Android的規(guī)范即可没讲,比如arrays.xml數(shù)組文件眯娱,dimens.xml分辨的配置,style.xml樣式的配置爬凑,資源文件的ID命名規(guī)則都是字母小寫徙缴,使用下劃線分割的原則。

參考:
https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md
http://source.android.com/source/code-style.html
https://google.github.io/styleguide/javaguide.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘁信,一起剝皮案震驚了整個濱河市于样,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潘靖,老刑警劉巖穿剖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卦溢,居然都是意外死亡糊余,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門单寂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贬芥,“玉大人,你說我怎么就攤上這事宣决≌号” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵尊沸,是天一觀的道長昵时。 經(jīng)常有香客問我,道長椒丧,這世上最難降的妖魔是什么壹甥? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮壶熏,結(jié)果婚禮上句柠,老公的妹妹穿的比我還像新娘。我一直安慰自己棒假,他們只是感情好溯职,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帽哑,像睡著了一般谜酒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妻枕,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天僻族,我揣著相機與錄音粘驰,去河邊找鬼。 笑死述么,一個胖子當著我的面吹牛蝌数,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播度秘,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼顶伞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剑梳?” 一聲冷哼從身側(cè)響起唆貌,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垢乙,沒想到半個月后挠锥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡侨赡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了粱侣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羊壹。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖齐婴,靈堂內(nèi)的尸體忽然破棺而出油猫,到底是詐尸還是另有隱情,我是刑警寧澤柠偶,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布情妖,位于F島的核電站,受9級特大地震影響诱担,放射性物質(zhì)發(fā)生泄漏毡证。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一蔫仙、第九天 我趴在偏房一處隱蔽的房頂上張望料睛。 院中可真熱鬧,春花似錦摇邦、人聲如沸恤煞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽居扒。三九已至,卻和暖如春丑慎,著一層夾襖步出監(jiān)牢的瞬間喜喂,已是汗流浹背瓤摧。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夜惭,地道東北人姻灶。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像诈茧,于是被迫代替她去往敵國和親产喉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 原文:http://android.jobbole.com/83659/編碼規(guī)范對于程序員尤為重要敢会,可以有效的幫助...
    jdsjlzx閱讀 889評論 0 4
  • 編碼規(guī)范對于程序員尤為重要曾沈,可以有效的幫助我們進行code review,提高代碼的可讀性鸥昏,讓其他人更快的理解代碼...
    allencaicai閱讀 557評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理塞俱,服務發(fā)現(xiàn),斷路器吏垮,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,506評論 25 707
  • 作字小作人障涯,人奇字自古。 綱常判周孔膳汪,筆墨不可補唯蝶。 寧拙毋巧,寧丑毋媚遗嗽,寧支離毋輕滑粘我,寧真率毋安排。
    上古天真唐閱讀 1,368評論 0 0