Android命名規(guī)范

序:團(tuán)隊(duì)開(kāi)發(fā)有一套自己的命名規(guī)范成福,方便大家review和code芳肌,今天我總結(jié)一下灵再,后面有需要用到的肋层,可以直接按這套走。


命名規(guī)范


命名中不可出現(xiàn)拼音或者中英文混用的命名翎迁,為了方便大家理解槽驶。

1.包名

包名全部小寫(xiě),連續(xù)的單詞只是簡(jiǎn)單地連接起來(lái)鸳兽,不使用下劃線。

采用反域名命名規(guī)則罕拂,全部使用小寫(xiě)字母揍异。一級(jí)包名是頂級(jí)域名,通常為com,edu,gov,net,org等爆班,二級(jí)包名為公司名衷掷,三級(jí)包名根據(jù)應(yīng)用進(jìn)行命名,四級(jí)包名為模塊名或?qū)蛹?jí)名柿菩。

注意:如果項(xiàng)目采用MVP戚嗅,所有M、V枢舶、P抽取出來(lái)的接口都放置在相應(yīng)模塊的i包下懦胞,所有的實(shí)現(xiàn)都放置在相應(yīng)模塊的impl下。

2.類(lèi)名

類(lèi)名都以UpperCamelCase風(fēng)格編寫(xiě)凉泄。

類(lèi)名通常是名詞或名詞短語(yǔ)躏尉,接口名稱(chēng)有時(shí)可能是形容詞或形容詞短語(yǔ)。現(xiàn)在還沒(méi)有特定的規(guī)則或行之有效的約定來(lái)命名注解類(lèi)型后众。

名詞胀糜,采用大駝峰命名法,盡量避免縮寫(xiě)蒂誉,除非該縮寫(xiě)是眾所周知的教藻, 比如HTML,URL,如果類(lèi)名稱(chēng)中包含單詞縮寫(xiě)右锨,則單詞縮寫(xiě)的每個(gè)字母均應(yīng)大寫(xiě)括堤。

測(cè)試類(lèi)的命名以它要測(cè)試的類(lèi)的名稱(chēng)開(kāi)始,以Test結(jié)束绍移。例如:HashTest或HashIntegrationTest痊臭。

接口(interface):命名規(guī)則與類(lèi)一樣采用大駝峰命名法,多以able或ible結(jié)尾登夫,如

interface Runnable广匙、interface Accessible。

注意:如果項(xiàng)目采用MVP恼策,所有Model鸦致、View潮剪、Presenter的接口都以I為前綴,不加后綴分唾,其他的接口采用上述命名規(guī)則趴樱。

3.方法名

方法名都以lowerCamelCase風(fēng)格編寫(xiě)。

方法名通常是動(dòng)詞或動(dòng)詞短語(yǔ)亭罪。

4.常量名

常量名命名模式為CONSTANT_CASE歧沪,全部字母大寫(xiě),用下劃線分隔單詞折砸。

5.非常量名

非常量字段名以lowerCamelCase風(fēng)格的基礎(chǔ)上改造為如下風(fēng)格:基本結(jié)構(gòu)為scopeVariableNameType看疗。

scope:范圍

非公有,非靜態(tài)字段命名以m開(kāi)頭睦授。

靜態(tài)字段命名以s開(kāi)頭两芳。

公有非靜態(tài)字段命名以p開(kāi)頭。

公有靜態(tài)字段(全局變量)命名以g開(kāi)頭去枷。

例子:

public class MyClass{

int mPackagePrivate;

private int mPrivate;

protected int mProtected;

private static MyClass sSingleton;

public int pField;

public static int gField;

}

使用1字符前綴來(lái)表示作用范圍怖辆,1個(gè)字符的前綴必須小寫(xiě),前綴后面是由表意性強(qiáng)的一個(gè)單詞或多個(gè)單詞組成的名字删顶,而且每個(gè)單詞的首寫(xiě)字母大寫(xiě)竖螃,其它字母小寫(xiě),這樣保證了對(duì)變量名能夠進(jìn)行正確的斷句逗余。

6.參數(shù)名

參數(shù)名以lowerCamelCase風(fēng)格編寫(xiě)斑鼻。

參數(shù)應(yīng)該避免用單個(gè)字符命名。

7.局部變量名

局部變量名以lowerCamelCase風(fēng)格編寫(xiě)猎荠,比起其它類(lèi)型的名稱(chēng)坚弱,局部變量名可以有更為寬松的縮寫(xiě)。

8.臨時(shí)變量

臨時(shí)變量通常被取名為i关摇、j荒叶、k、m和n输虱,它們一般用于整型些楣;c、d宪睹、e愁茁,它們一般用于字符型。 如:for (int i = 0; i < len ; i++)亭病。

9.類(lèi)型變量名

類(lèi)型變量可用以下兩種風(fēng)格之一進(jìn)行命名:

單個(gè)的大寫(xiě)字母鹅很,后面可以跟一個(gè)數(shù)字(如:E,T,X,T2)。

以類(lèi)命名方式(參考2.2 類(lèi)名)罪帖,后面加個(gè)大寫(xiě)的T(如:RequestT,FooBarT)促煮。

更多還可參考~[阿里巴巴Java開(kāi)發(fā)手冊(cè)]


資源命名規(guī)范


1.資源布局文<XML文件>

全部采用小寫(xiě)下劃線命名法邮屁。

a.contentView命名

必須以全部單詞小寫(xiě),單詞間以下劃線分割菠齿,使用名詞或名詞詞組佑吝。

所有Activity或Fragment的contentView必須與其類(lèi)名對(duì)應(yīng),對(duì)應(yīng)規(guī)則為:將所有字母都轉(zhuǎn)為小寫(xiě)绳匀,將類(lèi)型和功能調(diào)換(也就是后綴變前綴)芋忿。

例如:activity_main.xml

b.Dialog命名

規(guī)則:dialog_描述.xml

例如:dialog_hint.xml

c.PopupWindow命名

規(guī)則:ppw_描述.xml

例如:ppw_info.xml

d. 列表項(xiàng)命名

規(guī)則:item_描述.xml

例如:item_city.xml

e.包含項(xiàng)命名

規(guī)則:模塊_(位置)描述.xml

例如:activity_main_head.xml、activity_main_bottom.xml

注意:通用的包含項(xiàng)命名采用:項(xiàng)目名稱(chēng)縮寫(xiě)_描述.xml

例如:xxxx_title.xml

2.資源文件(圖片drawable文件夾下)

全部小寫(xiě)疾棵,采用下劃線命名法戈钢,加前綴區(qū)分

命名模式:可加后綴_small表示小圖,_big表示大圖陋桂,邏輯名稱(chēng)可由多個(gè)單詞加下劃線組成,采用以下規(guī)則:

用途_模塊名_邏輯名稱(chēng)

用途_模塊名_顏色

用途_邏輯名稱(chēng)

用途_顏色

例如:

如果有多種形態(tài):如按鈕選擇器:btn_xx.xml(selector)


注意:使用AndroidStudio的插件SelectorChapek可以快速生成selector蝶溶,前提是命名要規(guī)范嗜历。

3.動(dòng)畫(huà)文件(anim文件夾下)

全部小寫(xiě),采用下劃線命名法抖所,加前綴區(qū)分梨州。

具體動(dòng)畫(huà)采用以下規(guī)則:模塊名_邏輯名稱(chēng)。

例如:refresh_progress.xml田轧、market_cart_add.xml暴匠、market_cart_remove.xml。

4.values中name名稱(chēng)

a.colors的name命名使用下劃線命名法傻粘,在你的colors.xml文件中應(yīng)該只是映射顏色的名稱(chēng)一個(gè)ARGB值每窖,而沒(méi)有其它的。不要使用它為不同的按鈕來(lái)定義ARGB值弦悉。

例子:


b.dimens也一樣窒典,要通用得去定義

例如:

c.strings.xml

strings的name命名使用下劃線命名法,采用以下規(guī)則:模塊名+邏輯名稱(chēng)稽莉。

d.styles.xml

幾乎每個(gè)項(xiàng)目都需要適當(dāng)?shù)氖褂胹tyle文件瀑志,因?yàn)閷?duì)于一個(gè)視圖來(lái)說(shuō)有一個(gè)重復(fù)的外觀是很常見(jiàn)的,將所有的外觀細(xì)節(jié)屬性(colors污秆、padding劈猪、font)放在style文件中。

5.layout中的id命名

命名模式為:view縮寫(xiě)_模塊名_邏輯名良拼,比如btn_main_search

使用AndroidStudio的插件ButterKnife Zelezny战得,生成注解非常方便,原生的話可以使用Android Code Generator插件


注釋規(guī)范


1.類(lèi)注釋

具體可以在AS中自己配制庸推,Settings → Editor → File and Code Templates → Includes → File Header贡避,輸入

/** *

*? ? author : ${USER}

*? ? e-mail : xxx@xx

*? ? time? : ${YEAR}/${MONTH}/${DAY}

*? ? desc? :

*? ? version: 1.0

*

*/

2.方法注釋

每一個(gè)成員方法(包括自定義成員方法痛黎、覆蓋方法、屬性方法)的方法頭都必須做方法頭注釋?zhuān)诜椒ㄇ耙恍休斎?** + 回車(chē)或者設(shè)置Fix doc comment(Settings → Keymap → Fix doc comment)快捷鍵刮吧,AS便會(huì)幫你生成模板湖饱,我們只需要補(bǔ)全參數(shù)即可。


開(kāi)發(fā)其他規(guī)范參考


1.合理布局杀捻,有效運(yùn)用井厌、、標(biāo)簽致讥;

2.Activity和Fragment里面有許多重復(fù)的操作以及操作步驟仅仆,所以我們都需要提供一個(gè)BaseActivity和BaseFragment,讓所有的Activity和Fragment都繼承這個(gè)基類(lèi)垢袱。

3.方法基本上都按照調(diào)用的先后順序在各自區(qū)塊中排列墓拜;

4.相關(guān)功能作為小區(qū)塊放在一起(或者封裝掉);

5.當(dāng)一個(gè)類(lèi)有多個(gè)構(gòu)造函數(shù)请契,或是多個(gè)同名方法咳榜,這些函數(shù)/方法應(yīng)該按順序出現(xiàn)在一起,中間不要放進(jìn)其它函數(shù)/方法爽锥;

5.數(shù)據(jù)提供統(tǒng)一的入口涌韩。無(wú)論是在 MVP、MVC 還是 MVVM 中氯夷,提供一個(gè)統(tǒng)一的數(shù)據(jù)入口臣樱,都可以讓代碼變得更加易于維護(hù)。比如可使用一個(gè)DataManager腮考,把http雇毫、preference、eventpost踩蔚、database都放在DataManger里面進(jìn)行操作嘴拢,我們只需要與DataManger打交道;

6.多用組合, 少用繼承寂纪;

7.提取方法, 去除重復(fù)代碼席吴。對(duì)于必要的工具類(lèi)抽取也很重要,這在以后的項(xiàng)目中是可以重用的捞蛋。

8.可引入 Dagger2 減少模塊之間的耦合性孝冒。Dagger2 是一個(gè)依賴(lài)注入框架,使用代碼自動(dòng)生成創(chuàng)建依賴(lài)關(guān)系需要的代碼拟杉。減少很多模板化的代碼庄涡,更易于測(cè)試,降低耦合搬设,創(chuàng)建可復(fù)用可互換的模塊穴店;

9.項(xiàng)目引入RxJava+RxAndroid這些響應(yīng)式編程撕捍,可以極大的減少邏輯代碼;

10.通過(guò)引入事件總線泣洞,如:EventBus忧风、AndroidEventBus、RxBus球凰,它允許我們?cè)贒ataLayer中發(fā)送事件狮腿,以便ViewLayer中的多個(gè)組件都能夠訂閱到這些事件,減少回調(diào)呕诉;

11.使用AS自帶的Lint來(lái)優(yōu)化代碼結(jié)構(gòu)(什么缘厢,你不會(huì)?右鍵module甩挫、目錄或者文件贴硫,選擇Analyze → Inspect Code);

12.最后不要忘了內(nèi)存泄漏的檢測(cè)伊者;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末英遭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子删壮,更是在濱河造成了極大的恐慌贪绘,老刑警劉巖兑牡,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件央碟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡均函,警方通過(guò)查閱死者的電腦和手機(jī)亿虽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)苞也,“玉大人洛勉,你說(shuō)我怎么就攤上這事∪绯伲” “怎么了收毫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)殷勘。 經(jīng)常有香客問(wèn)我此再,道長(zhǎng),這世上最難降的妖魔是什么玲销? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任输拇,我火速辦了婚禮,結(jié)果婚禮上贤斜,老公的妹妹穿的比我還像新娘策吠。我一直安慰自己逛裤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布猴抹。 她就那樣靜靜地躺著带族,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洽糟。 梳的紋絲不亂的頭發(fā)上炉菲,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音坤溃,去河邊找鬼拍霜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛薪介,可吹牛的內(nèi)容都是我干的祠饺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汁政,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼道偷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起记劈,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勺鸦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后目木,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體换途,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年刽射,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了军拟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡誓禁,死狀恐怖懈息,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摹恰,我是刑警寧澤辫继,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站俗慈,受9級(jí)特大地震影響姑宽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姜盈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一低千、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦示血、人聲如沸棋傍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瘫拣。三九已至,卻和暖如春告喊,著一層夾襖步出監(jiān)牢的瞬間麸拄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工黔姜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拢切,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓秆吵,卻偏偏與公主長(zhǎng)得像淮椰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纳寂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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

  • 無(wú)論是哪種編程語(yǔ)言的學(xué)習(xí)主穗,我們的命名都要有一定的規(guī)范才能更好的進(jìn)行團(tuán)隊(duì)協(xié)作,更好的進(jìn)行代碼的的二次開(kāi)發(fā)毙芜。所以在這里...
    李慶文閱讀 663評(píng)論 2 3
  • 命名規(guī)范 1. 包命名 規(guī)則:包名全部小寫(xiě)忽媒,采用反域名命名規(guī)則,一級(jí)包名是頂級(jí)域名腋粥,通常為com, edu, go...
    聶順閱讀 847評(píng)論 0 2
  • 作者簡(jiǎn)介 原創(chuàng)微信公眾號(hào)郭霖 WeChat ID: guolin_blog 大家早上好晦雨,新的一周開(kāi)始啦! 本篇來(lái)自...
    木木00閱讀 569評(píng)論 1 4
  • 命名規(guī)范 駝峰命名法:又稱(chēng)小駝峰命名法灯抛。除了首個(gè)單詞首字母小寫(xiě)除外金赦,其余所有單詞所有首字母都要大寫(xiě) 帕斯卡命名法:...
    Y小圓臉閱讀 878評(píng)論 0 0
  • 這是我高中時(shí)代的母校音瓷,焦作市第十一中學(xué)对嚼,學(xué)校很小,上學(xué)時(shí)經(jīng)常嫌棄他绳慎,甚至連個(gè)像樣的約會(huì)的地方都沒(méi)有纵竖。可是杏愤,畢業(yè)后真...
    活在陸地上的魚(yú)閱讀 641評(píng)論 0 0