余物寶Android組編程規(guī)范

明名約定

1. 對所有標(biāo)識符都通用的規(guī)則

標(biāo)識符只能使用ASCII字母和數(shù)字砾省,因此每個有效的標(biāo)識符名稱都能匹配正則表達(dá)式\w+。

2. 標(biāo)識符類型的規(guī)則
  1. 包名
    包名全部小寫筹裕,連續(xù)的單詞只是簡單地連接起來,不使用下劃線。
    采用反域名命名規(guī)則沙热,全部使用小寫字母。一級包名為com罢缸,二級包名為xx(公司名稱)篙贸,三級包名(平臺),四級包名(項目)枫疆,五級包名(模塊名稱或者層級名稱)爵川。
    此包中包含

頁面用到的Activity類 (activitie層級名用戶界面層)

com.xx.應(yīng)用名稱縮寫.activity

基礎(chǔ)共享的類

 com.xx.應(yīng)用名稱縮寫.base

頁面用到的Adapter類 (適配器的類)

com.xx.應(yīng)用名稱縮寫.adapter
頁面用到的Adapter類 (適配器的類)

公共工具方法類(util模塊名)

com.xx.應(yīng)用名稱縮寫.util

JavaBean類

com.xx.應(yīng)用名稱縮寫.bean

模型類

com.xx.應(yīng)用名稱縮寫.model

數(shù)據(jù)庫操作類

com.xx.應(yīng)用名稱縮寫.db

自定義的View類等

com.xx.應(yīng)用名稱縮寫.view (或者 com.xx.應(yīng)用名稱縮寫.widget )

Service服務(wù)

com.xx.應(yīng)用名稱縮寫.service

BroadcastReceiver服務(wù)

com.xx.應(yīng)用名稱縮寫.receiver

注意:
如果項目采用MVP,所有M养铸、V雁芙、P抽取出來的接口都放置在相應(yīng)模塊的i包下,所有的實現(xiàn)都放置在相應(yīng)模塊的impl下

  1. 類名
    類名都以UpperCamelCase風(fēng)格編寫钞螟。
    類名通常是名詞或名詞短語兔甘,接口名稱有時可能是形容詞或形容詞短語。現(xiàn)在還沒有特定的規(guī)則或行之有效的約定來命名注解類型鳞滨。
    名詞洞焙,采用大駝峰命名法,盡量避免縮寫拯啦,除非該縮寫是眾所周知的澡匪, 比如HTML,URL,如果類名稱中包含單詞縮寫褒链,則單詞縮寫的每個字母均應(yīng)大寫唁情。
    例如

Activity 類

 Activity為后綴標(biāo)識
歡迎頁面類WelcomeActivity

Adapter類

 Adapter 為后綴標(biāo)識
新聞詳情適配器 NewDetailAdapter

解析類

Parser為后綴標(biāo)識
首頁解析類HomePosterParser

工具方法類

  Util或Manager為后綴標(biāo)識(與系統(tǒng)或第三方的Utils區(qū)分)或功能+Util

線程池管理類:ThreadPoolManager

日志工具類:LogUtil(Logger也可)

打印工具類:PrinterUtil

數(shù)據(jù)庫類

 以DBHelper后綴標(biāo)識
新聞數(shù)據(jù)庫:NewDBHelper

Service類

以Service為后綴標(biāo)識
時間服務(wù)TimeServiceBroadcast

Receiver類

以Receiver為后綴標(biāo)識
推送接收J(rèn)PushReceiver

ContentProvider

以Provider為后綴標(biāo)識

自定義的共享基礎(chǔ)類

以Base開頭
BaseActivity,BaseFragment

測試類

以它要測試的類的名稱開始,以Test結(jié)束甫匹。
例如:HashTest 或 HashIntegrationTest甸鸟。

抽象類

用 Abstract 做為類命名的開頭

接口(interface)

命名規(guī)則與類一樣采用大駝峰命名法,多以
able或ible結(jié)尾兵迅,如
interface Runnable 
interface Accessible

接口實現(xiàn)類

在類的后面加上 Impl 如:
interface Container
class ContainerImpl

注意:
如果項目采用MVP抢韭,所有Model、View恍箭、Presenter的接口都以I為前綴刻恭,不加后綴,其他的接口采用上述命名規(guī)則扯夭。

  1. 方法名
    方法名都以 LowerCamelCase 風(fēng)格編寫鳍贾。
    方法名通常是動詞或動詞短語。

初始化相關(guān)方法,使用init為前綴標(biāo)識交洗,如初始化布局initView()

initXX()

方法返回值為boolean型的請使用is或check為前綴標(biāo)識

isXX() checkXX()

返回某個值的方法贾漏,使用get為前綴標(biāo)識

getXX()

對數(shù)據(jù)進(jìn)行處理的方法,盡量使用handle為前綴標(biāo)識

handleXX()

彈出提示框和提示信息藕筋,使用display/show為前綴標(biāo)識

displayXX()/showXX()

與保存數(shù)據(jù)相關(guān)的纵散,使用save為前綴標(biāo)識

saveXX()

對數(shù)據(jù)重組的,使用reset前綴標(biāo)識

resetXX()

清除數(shù)據(jù)相關(guān)的

clearXX()

清除數(shù)據(jù)相關(guān)的

removeXXX()

繪制數(shù)據(jù)或效果相關(guān)的隐圾,使用draw前綴標(biāo)識

drawXXX()

下劃線可能出現(xiàn)在JUnit測試方法名稱中用以分隔名稱的邏輯組件伍掀。一個典型的模式是:test_,例如testPop_emptyStack暇藏。

并不存在唯一正確的方式來命名測試方法蜜笤。

  1. 常量名

常量名命名模式為CONSTANT_CASE,全部字母大寫盐碱,用下劃線分隔單詞把兔。那沪伙,到底什么算是一個常量?

每個常量都是一個靜態(tài)final字段县好,但不是所有靜態(tài)final字段都是常量围橡。在決定一個字段是否是一個常量時,考慮它是否真的感覺像是一個常量缕贡。

例如翁授,如果任何一個該實例的觀測狀態(tài)是可變的,則它幾乎肯定不會是一個常量晾咪。只是永遠(yuǎn)不打算改變對象一般是不夠的收擦,它要真的一直不變才能將它示為常量。

// Constants

static final int NUMBER = 5;

static final ImmutableList NAMES = ImmutableList.of("Ed", "Ann");

static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable

static final SomeMutableType[] EMPTY_ARRAY = {};

enum SomeEnum { ENUM_CONSTANT }

// Not constants

static String nonFinal = "non-final";

final String nonStatic = "non-static";

這些名字通常是名詞或名詞短語谍倦。

  1. 非常量字段名
    非常量字段名以LowerCamelCase風(fēng)格的基礎(chǔ)上改造為如下風(fēng)格:

    基本結(jié)構(gòu)為scopeVariableNameType塞赂,
    scope:范圍

    非公有,非靜態(tài)字段命名以m開頭昼蛀。

    靜態(tài)字段命名以s開頭减途。

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

    公有靜態(tài)字段(全局變量)命名以g開頭曹洽。

    public static final 字段(常量) 全部大寫鳍置,并用下劃線連起來。

    例子:

public class MyClass { 

       public static final int SOME_CONSTANT = 41; 

       public int pField; 

       private static MyClass sSingleton; 

       int mPackagePrivate; 

       private int mPrivate; 

       protected int mProtected;

       public static int gField;

}

使用1字符前綴來表示作用范圍送淆,1個字符的前綴必須小寫税产,前綴后面是由表意性強(qiáng)的一個單詞或多個單詞組成的名字,而且每個單詞的首寫字母大寫偷崩,其它字母小寫辟拷,這樣保證了對變量名能夠進(jìn)行正確的斷句。

3. 資源文件命名規(guī)范
  1. 資源布局文件(XML文件(layout布局文件)):
    全部小寫阐斜,采用下劃線命名法
  • contentview 命名
    必須以全部單詞小寫衫冻,單詞間以下劃線分割,使用名詞或名詞詞組谒出。
    所有Activity或Fragment的contentView必須與其類名對應(yīng)隅俘,對應(yīng)規(guī)則為:
    將所有字母都轉(zhuǎn)為小寫,將類型和功能調(diào)換(也就是后綴變前綴)笤喳。
    例如:activity_main.xml

  • Dialog命名:dialog_描述.xml
    例如:dialog_hint.xml

  • PopupWindow命名:ppw_描述.xml
    例如:ppw_info.xml

  • 列表項命名:item_描述.xml
    例如:item_city.xml

  • 包含項命名:模塊(位置)描述.xml
    例如:activity_main_head.xml为居、activity_main_bottom.xml
    注意:通用的包含項命名采用:項目名稱縮寫
    描述.xml
    例如:xxxx_title.xml

  1. 資源文件(圖片drawable文件夾下):
    全部小寫,采用下劃線命名法杀狡,加前綴區(qū)分
    命名模式:可加后綴 _small 表示小圖, _big 表示大圖蒙畴,邏輯名稱可由多個單詞加下劃線組成,采用以下規(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 白色分割線

如果有多種形態(tài)如按鈕等除外如 btn_xx.xml(selector)

按鈕圖片使用btn_整體效果(selector)

btn_xx

按鈕圖片使用btn_正常情況效果

btn_xx_normal

按鈕圖片使用btn_點擊時候效果

btn_xx_pressed

state_focused聚焦效果

btn_xx_focused

state_enabled (false)不可用效果

btn_xx_disabled

state_checked選中效果

btn_xx_checked

state_selected選中效果

btn_xx_selected

state_hovered懸停效果

btn_xx_hovered

state_checkable可選效果

btn_xx_checkable

state_activated激活的

btn_xx_activated

背景圖片使用bg_功能_說明

bg_head

默認(rèn)圖片使用def_功能_說明

def_search_cell

圖標(biāo)圖片使用ic_功能_說明

ic_more_help

具有分隔特征的圖片使用seg_功能_說明

seg_list_line

選擇圖標(biāo)使用sel_功能_說明

sel_ok

注意:

使用AndroidStudio的插件SelectorChapek可以快速生成selector呜象,前提是命名要規(guī)范,組件化下各模塊資源文件需要統(tǒng)一加上前綴或者后綴

  1. 動畫文件(anim文件夾下):

全部小寫膳凝,采用下劃線命名法碑隆,加前綴區(qū)分。
具體動畫采用以下規(guī)則:
模塊名_邏輯名稱
邏輯名稱
refresh_progress.xml
market_cart_add.xml
market_cart_remove.xml
普通的tween動畫采用如下表格中的命名方式
// 前面為動畫的類型蹬音,后面為方向

動畫命名例子

規(guī)范寫法

淡入

fade_in

淡出

fade_out

從下方推入

push_down_in

從下方推出

push_down_out

推向左方

push_left

從頭部滑動進(jìn)入

slide_in_from_top

變形進(jìn)入

zoom_enter

滑動進(jìn)入

slide_in

中間縮小

shrink_to_middle
  1. values中name命名

類別

命名

示例

strings

strings的name命名使用下劃線命名法上煤,采用以下規(guī)則:模塊名+邏輯名稱

main_menu_about 主菜單按鍵文字friend_title 好友模塊標(biāo)題欄
friend_dialog_del 好友刪除提示login_check_email 登錄驗證

dialog_title 彈出框標(biāo)題

button_ok 確認(rèn)鍵 loading 加載文字

colors

colors的name命名使用下劃線命名法,采用以下規(guī)則:模塊名+邏輯名稱 
顏色

friend_info_bg friend_bg transparent gray

styles

styles的name命名使用 Camel命名法祟绊,采用以下規(guī)則:模塊名+邏輯名稱

main_tabBottom
  1. layout中的id命名

命名模式為:view縮寫_view的邏輯名稱
使用 AndroidStudio 的插件 ButterKnife Zelezny,生成注解非常方便哥捕。
如果不使用 ButterKnife Zelezny牧抽,則建議使用 view 縮寫做后綴,如:username_tv(展示用戶名的TextView)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遥赚,一起剝皮案震驚了整個濱河市扬舒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凫佛,老刑警劉巖讲坎,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愧薛,居然都是意外死亡晨炕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門毫炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓮栗,“玉大人,你說我怎么就攤上這事瞄勾》鸭椋” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵进陡,是天一觀的道長愿阐。 經(jīng)常有香客問我,道長趾疚,這世上最難降的妖魔是什么缨历? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮糙麦,結(jié)果婚禮上戈二,老公的妹妹穿的比我還像新娘。我一直安慰自己喳资,他們只是感情好觉吭,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仆邓,像睡著了一般鲜滩。 火紅的嫁衣襯著肌膚如雪伴鳖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天徙硅,我揣著相機(jī)與錄音榜聂,去河邊找鬼。 笑死嗓蘑,一個胖子當(dāng)著我的面吹牛须肆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桩皿,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豌汇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泄隔?” 一聲冷哼從身側(cè)響起拒贱,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佛嬉,沒想到半個月后逻澳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡暖呕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年斜做,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湾揽。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陨享,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钝腺,到底是詐尸還是另有隱情抛姑,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布艳狐,位于F島的核電站定硝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏毫目。R本人自食惡果不足惜蔬啡,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镀虐。 院中可真熱鬧箱蟆,春花似錦、人聲如沸刮便。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辈毯,卻和暖如春坝疼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谆沃。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工钝凶, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唁影。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓耕陷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親据沈。 傳聞我的和親對象是個殘疾皇子哟沫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)卓舵,斷路器南用,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • Android編碼規(guī)范 源文件基礎(chǔ) 文件名 源文件以其最頂層的類名來命名膀钠,大小寫敏感掏湾,文件擴(kuò)展名為.java。 文...
    呼呼哥閱讀 941評論 0 0
  • 文章來自https://github.com/Blankj/AndroidStandardDevelop#安卓開發(fā)...
    小莊bb閱讀 755評論 0 1
  • Android 編碼規(guī)范 1. 前言 這份文檔是 Google Java Code Style 的譯文肿嘲,并稍有添加...
    人失憶閱讀 445評論 0 3
  • 1融击、引言 數(shù)據(jù)庫設(shè)計過程中表、字段等的命名規(guī)范也算是設(shè)計規(guī)范的一部分雳窟,不過設(shè)計規(guī)范更多的是為了確保數(shù)據(jù)庫設(shè)計的合理...
    SnowflakeCloud閱讀 40,988評論 0 48