天天看點

Android開發——項目代碼編寫規範

良好的代碼編寫規範更能展現一個程式員的素養,減少後面接手的維護人員的工作量,更加容易的了解代碼的意圖,本文将從包命名、類命名、變量命名、接口命名、方法命名等幾個方面講述Android編碼規範,希望給Android程式員帶來幫助,提高自己的編碼素養。

1、Android編碼規範

包命名規範

包(packages):采用反域名命名規則,全部使用小寫字母。一級包名為com,二級包名為xxx(可以是公司域名或者個人命名),三級包名根據應用進行命名,四級包名為子產品名或層級名。

包名 說明
com.xxx.應用名稱縮寫.activities 頁面用到的Activity類(activities層級使用者界面)
com.xxx.應用名稱縮寫.fragment 頁面用到的Fragment類
com.xxx.應用名稱縮寫.base 頁面中每個Activity類共享的可以寫成一個BaseActivity類(基礎共享的類)
com.xxx.應用名稱縮寫.adapter 頁面用到的Adapter類(擴充卡的類)
com.xxx.應用名稱縮寫.utils 此包中包含:公共工具方法類(包含日期、網絡、存儲、日志等工具類)

com.xxx.應用名稱縮寫.bean

(model/domain均可,個人喜好)

實體類
com.xxx.應用名稱縮寫.db 資料庫操作
com.xxx.應用名稱縮寫.view(或者.ui) 自定義的View類等
com.xxx.應用名稱縮寫.service Service服務
com.xxx.應用名稱縮寫.broadcast Broadcast服務

類命名規範

類(classes):名詞,采用大駝峰命名法,盡量避免縮寫,除非該縮寫是衆所周知的,比如HTML,URL,如果類名稱包含單詞縮寫,則單詞縮寫的每個字母均應大寫。

描述 例如
Application類 Application為字尾辨別 XXXApplication
Activity類 Activity為字尾辨別

閃屏頁面類

SplashActivity

解析類 Handler為字尾辨別
公共方法類 Utils或Manager為字尾辨別

線程池管理類:ThreadPoolManager

日志工具類:LogUtils

資料庫類 以DBHelper字尾辨別 MySQLiteDBHelper
Service類 以Service為字尾辨別 播放服務:PlayService
BroadcastReceiver類 以Broadcast為字尾辨別

時間通知:

TimeBroadcast

ContentProvider類 以Provider為字尾辨別 單詞内容提供者:DictProvider
直接寫的共享基礎類 以Base為字首

BaseActivity,

BaseFragment

變量命名規範

變量(variables)采用小駝峰命名法。類中控件名稱必須與xml布局id保持一緻。

公開的常量:定義為靜态final,名稱全部大寫。eg: public staticfinal String ACTION_MAIN=”android.intent.action.MAIN”;

靜态變量:名稱以s開頭 eg:private static long sInstanceCount = 0;

非靜态的私有變量、protected的變量:以m開頭,eg:private Intent mItent;

接口命名規範

接口(interface):命名規則與類一樣采用大駝峰命名法,多以able或ible結尾,eg:interface Runable; interface Accessible;

方法命名規範

方法(methods):動詞或動名詞,采用小駝峰命名法,eg:onCreate(),run();

方法 說明
initXX() 初始化相關方法,使用init為字首辨別,如初始化布局initView()
isXX() checkXX()方法傳回值為boolean型的請使用is或check為字首辨別
getXX() 傳回某個值的方法,使用get為字首辨別
processXX() 對資料進行處理的方法,盡量使用process為字首辨別
displayXX() 彈出提示框和提示資訊,使用display為字首辨別
saveXX() 與儲存資料相關的,使用save為字首辨別
resetXX() 對資料重組的,使用reset字首辨別
clearXX() 清除資料相關的
removeXX() 清除資料相關的
drawXXX() 繪制資料或效果相關的,使用draw字首辨別

布局檔案命名規範

 全部小寫,采用下劃線命名法

1).contentview命名, Activity預設布局,以去掉字尾的Activity類進行命名。不加字尾:

功能子產品.xml

eg:main.xml、more.xml、settings.xml

       或者:activity_功能子產品.xml

eg:activity_main.xml、activity_more.xml

2).Dialog命名:dialog_描述.xml

eg:dlg_hint.xml

3).PopupWindow命名:ppw_描述.xml

       eg:ppw_info.xml

4). 清單項命名listitem_描述.xml

eg:listitem_city.xml

5).包含項:include_子產品.xml

eg:include_head.xml、include_bottom.xml

6).adapter的子布局:功能子產品_item.xml

eg:main_item.xml、

資源id命名規範

 命名模式為:view縮寫_子產品名稱_view的邏輯名稱

view的縮寫詳情如下:

控件 縮寫
LayoutView lv
RelativeView rv
TextView tv
Button btn
ImageButton imgBtn
ImageView          iv
CheckBox            cb
RadioButton         rb
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            lVi 或則lv
ExpandableList      epdLt
MapView             mapVi

動畫檔案命名

 動畫檔案(anim檔案夾下):全部小寫,采用下劃線命名法,加字首區分。

//前面為動畫的類型,後面為方向

動畫命名例子 規範寫法 備注
fade_in 淡入
fade_out 淡出
push_down_in 從下方推入
push_down_out 從下方推出
push_left 推像左方
slide_in_from_top 從頭部滑動進入
zoom_enter 變形進入
slide_in 滑動進入
shrink_to_middle 中間縮小

圖檔資源檔案命名

命名 說明
bg_xxx 這種圖檔一般那些比較大的圖檔,比如作為某個Activity的背景等
btn_xxx 按鈕,一般用于按鈕,而且這種按鈕沒有其他狀态
ic_xxx 圖示,一般用于單個圖示,比如啟動圖檔ic_launcher
bg_描述_狀态1[_狀态2] 用于控件上的不同狀态
btn_描述_狀态1[_狀态2] 用于按鈕上的不同狀态
chx_描述_狀态1[_狀态2] 選擇框,一般有2态和4态

一些常見的單詞縮寫

名稱 縮寫
icon   ic (主要用在app的圖示)
color   cl(主要用于顔色值)
divider di(主要用于分隔線,不僅包括Listview中的divider,還包括普通布局中的線)
selector sl(主要用于某一view多種狀态,不僅包括Listview中的selector,還包括按鈕的selector)
average avg
background   Bg(主要用于布局和子布局的背景)
buffer buf
control ctrl
delete del
document  doc
error err
escape esc
increment inc
infomation info
initial  init
image img
Internationalization I18N
length len
library lib
message msg
password- pwd
position pos
server srv
string str
temp tmp
window wnd(win)