Android代碼規(guī)范

1.前言

本文檔參考了Google官方Android編碼風(fēng)格規(guī)范,盡量形成一個統(tǒng)一的風(fēng)格,見量知其意就可。

2.源文件基礎(chǔ)

2.1 文件名

源文件以其最頂層的類名來命名,大小寫敏感,文件擴(kuò)展名為.java。

2.2 文件編碼格式:UTF-8

源文件編碼格式為UTF-8

3.源文件結(jié)構(gòu):按順序包含以下

3.1 許可證或版權(quán)信息

如果一個文件包含許可證或版權(quán)信息,那么它應(yīng)當(dāng)被放在文件最前面。

3.2 package語句

3.3 import語句

3.3.1 import不要使用通配符

不要出現(xiàn)類似的import語句:import java.util.*;

3.3.2 不要換行

import語句不換行

3.3.3 順序和間距

import語句可分為以下幾組,按照這個順序,每組由一個空行分隔:

所有的靜態(tài)導(dǎo)入獨(dú)立成組

第三方的包,每個頂級包為一組,按字典排序,例如:android, com, junit, org

3.4 類聲明

3.4.1 只有一個頂級類

類聲明每個頂級類都在一個與它同名的源文件中

3.4.2 類成員順序

類的成員順序?qū)σ讓W(xué)性有很大的影響,但這也不存在唯一的通用法則,不同的類對成員的排序可能是不一樣的。 最重要的是,每個類應(yīng)該以某種邏輯去排序它的成員,維護(hù)者應(yīng)該要解釋這種排序的邏輯。比如:新的方法不能總是習(xí)慣性地添加的類的結(jié)尾,因?yàn)檫@樣是按照時(shí)間順序而非某種邏輯來排序的。

3.4.2.1 區(qū)塊劃分

?常量聲明區(qū)(static final類型數(shù)據(jù))

內(nèi)部接口聲明區(qū)

UI控件成員變量聲明區(qū)

普通成員變量聲明區(qū)

生命周期回調(diào)方法區(qū)(onCreate(), onResume(), onPause(), onDestroy())

初始化相關(guān)方法區(qū)

事件響應(yīng)方法區(qū)

普通邏輯方法區(qū)

重載的邏輯方法區(qū)

內(nèi)部類聲明區(qū)

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

?按照發(fā)生的先后順序排列

常量按照使用先后順序排列

UI控件成員變量按照layout文件中的先后順序排列

普通成員變量按照使用的先后順序排列

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

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

3.4.2.3 重載:永不分離

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

4.命名約定

4.1 類名

?類名都以UpperCamelCase(駝峰規(guī)則)風(fēng)格編寫

類名通常是名詞或名詞短語,接口名詞有時(shí)可能是形容詞或形容詞短語

名詞盡量避免縮寫,除非該縮寫是中所周知的,比如HTML, URL。如果類名稱中包含單詞縮寫,則單詞縮寫的每個字母均應(yīng)大寫。

安卓相關(guān)類命名規(guī)則:

描述例如

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

Fragment類Fragment為后綴標(biāo)識關(guān)于我們AboutFragment

Service類Service為后綴標(biāo)識

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

Adapter類Adapter為后綴標(biāo)識行程列表適配器:TripListAdapter

工具方法類Util或Manager為后綴標(biāo)識(與系統(tǒng)或第三方的Utils區(qū)分)或功能+Util日期格式工具類:DateUtil, 日志工具類:LogUtil

4.2 變量命名規(guī)則

?在Activity等類中的全局變量均以小寫字母m開頭(有g(shù)eter/setter方法的實(shí)體類除外),后跟變量的英文描述(采用駝峰規(guī)則,如果由多個單詞拼接,則每個單詞首字母大寫),例如:private String mUserName;

在方法中的局部變量,直接以小寫字母開頭,例如:String userName;

在類中任何地方引用某變量時(shí),能立馬區(qū)分出該變量是一個全局變量還是局部方法變量

4.3 靜態(tài)變量、常量命名

字母全部大寫,單詞之間用”_”分隔開。 例如:public static final String APP_TITLE_TEXT = “app_title”;

4.4 Activity中的UI控件變量的命名

為避免控件和普通成員變量混淆,所有的空間命名軍采用如下規(guī)則:

m+View縮寫(或者全稱)+功能名稱,例如:

定義一個輸入用戶名的輸入框: EditText mEtUserName;

定義一個輸入密碼的輸入框: EditText mEtPassword;

定義一個等錄按鈕: Button mBtnLogin;

4.5 layout文件命名規(guī)則

?Activity中的layout定義:activity_描述.xml,如:activity_register.xml,表示注冊界面

Fragment中的layout定義:fragment_描述.xml,如:fragment_register.xml

Dialog中的layout定義:dialog_描述.xml,如:dialog_login.xml,表示登錄的對話框

Popup Window中的layout定義:ppw_描述.xml,如:ppw_info.xml

列表項(xiàng)定義:item_描述.xml,例如:item_city.xml

包含項(xiàng)命名:模塊_(位置)描述.xml,例如:activity_main_bottom.xml

通用的包含項(xiàng)命名采用:項(xiàng)目名稱縮寫_描述.xml,例如:hm_header.xml

4.6 資源文件命名規(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白色分割線

sel_edit.xml selector類型的edit圖標(biāo)

名稱功能

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

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

btn_xx_pressed按鈕圖片使用btn_點(diǎn)擊時(shí)候效果

btn_xx_focusedstate_focused聚焦效果

btn_xx_disabledstate_enabled (false)不可用效果

btn_xx_checkedstate_checked選中效果

btn_xx_selectedstate_selected選中效果

btn_xx_hoveredstate_hovered懸停效果

btn_xx_checkablestate_checkable可選效果

btn_xx_activatedstate_activated激活的

btn_xx_windowfocusedstate_window_focused

bg_head背景圖片使用bg功能說明

def_search_cell默認(rèn)圖片使用def功能說明

ic_more_help圖標(biāo)圖片使用ic功能說明

seg_list_line具有分隔特征的圖片使用seg功能說明

sel_ok選擇圖標(biāo)使用sel功能說明

4.7 values中name的命名

類別命名示例

strings使用下劃線命名法,規(guī)則:

1.模塊名+邏輯名稱

2.通用字符串以通用英文字符串命名

friend_title: 好友模塊標(biāo)題欄?

dialog_title: 彈出框標(biāo)題

ok: 確定

cancel:取消

colors使用下劃線命名法,規(guī)則:

1.模塊名+邏輯名稱

2.顏色

3.多種狀態(tài)的顏色,以sel為前綴

friend_info_bgfriend_bg: 好友信息背景色?

transparent: 透明色

sel_main_btn:包含各種狀態(tài)的顏色

styles使用駝峰命名法,參照系統(tǒng)定義的styleRectBlueButton

RectBlueButton.Large

4.8 layout文件中的控件id命名

格式為:控件類別型縮寫_模塊名稱_功能簡易描述

在登錄界面對應(yīng)的layout文件中,有個輸入用戶名的輸入框,則定義為:

?? ? @+id/et_login_username

在注冊界面對應(yīng)的layout文件中,有個提交按鈕,則定義為:

?? ? @+id/btn_register_submit

在我的好友列表里的ListView,則定義為:

?? ? @+id/lv_friends_list

4.9 UI控件縮寫表

控件縮寫例如

LinearLayoutllmLlLogin

RelativeLayoutrlmRlLogin

FrameLayoutflmFlLogin

TableLayouttlmTlLoing

ButtonbtnmBtnLogin

ImageButtonibtnmIbtLogin

TextViewtvmTvName

EditTextetmEtPwd

ListViewlvmLvFriends

ImageViewivmIvAvatar

GridViewgvmGvPhoto

RecyclerViewrvmRvFriends

ProgressBarpbmPbUpload

SeekBarsbmSbUpload

WebViewwvmWvComm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容