android命名規範

Android 開發規範 (陳楊)

(一)注意事項

1. 編碼方式統一用UTF-8. Android Studio默認已經是UTF-8,只要不去改動它就能夠了。

2. 縮進統一爲4個空格,將Tab size設置爲4則能夠保證tab鍵按4個空格縮進。另外,不要勾選上Use tab character,能夠保證切換到不一樣tab長度的環境時還能繼續保持統一的4個空格的縮進樣式。

3. 花括號不要單獨一行,和它前面的代碼同一行。並且,花括號與前面的代碼之間用一個空格隔開。

4. 空格的使用

if、else、for、switch、while等邏輯關鍵字與後面的語句留一個空格隔開。 java

5. 空行的使用

將邏輯相關的代碼段用空行隔開,以提升可讀性。空行也只空一行,不要空多行。在如下狀況需用一個空行: web

· 兩個方法之間 數據庫

· 方法內的兩個邏輯段之間 json

· 方法內的局部變量和方法的第一條邏輯語句之間 api

· 常量和變量之間 數據結構

6. 當一個表達式沒法容納在一行內時,可換行顯示,另起的新行用8個空格縮進。

7. 一行聲明一個變量,不要一行聲明多個變量,這樣有利於寫註釋。

8. 行寬設置爲100,設置格式化時自動斷行到行寬位置。

9. 使用快捷鍵進行代碼自動格式化。

Windows:CTRL+ALT+L
Mac:OPTION+COMMAND+L app

10. 一個方法最多不要超過40行代碼。

11. 範圍型的常量用枚舉類定義,而不要直接用整型或字符,這樣能夠減小範圍值的有效性檢查。

12. 文字大小的單位統一用sp,元素大小的單位統一用dp。

13. 應用中的字符串統一在strings.xml中定義,而後在代碼和佈局文件中引用。

14. 顏色值統一在colors.xml中定義,而後在代碼和佈局文件中引用。另外,不要在代碼和佈局文件中引用系統的顏色,除了透明。

 

(二)命名規範  

 Java文件命名規範 dom

Activity (模塊名+功能名+Activity) 異步

Adapter   (模塊名+功能名+Adapter)    ide

解析類    (Hlr爲後綴標識) 

公共方法  (Tools)

數據庫    (Db  ,Sp 爲後綴標識)

Service   (Service 爲後綴標識) 

BroadcastReceive   (Broadcast 爲後綴標識)

ContentProvider    (Provider爲後綴標識)

共享基礎類(Base開頭)

實體類 (Model) 

接口   (以lmpl爲後綴)

AppApplication 定義Application類

AppConfig      定義配置數據(常量)

 資源文件命名規範 (小寫)

Layout 

Activity        act_activity所在包的page爲中綴_功能名稱  

Fragment        fra_所在的activity_功能名稱

Adpter          adpter_功能模塊_tem

Item            item_類型_ /item_adpter_

Dialog          dlg_

PopupWindow     ppw_

Include         include_ 

Merge           merge_ 

組合控件        comb_功能

動態佈局添加    dyn_

 

res目錄下的命名規範(小寫)

Drawable

圖標圖片 ico_

按鈕圖片(前綴{_控件}{_範圍}{_後綴},控件、範圍、後綴可選,但控件和範圍至少要有一個)

按壓背景   btn_效果(選中效果)   btn_正常效果_normal  btn_點擊時的效果_press

經常使用前綴

默認背景   def_功能_說明

背景       bg_功能_說明

分割特徵   div_功能_說明

選擇       sel_功能_說明

經常使用後綴:  

  nor     圖片的狀態,表明普通狀態

  hl       圖片的狀態,表明高亮狀態

  press    圖片的狀態,表明按下狀態

  Select   圖片的狀態,表明其所佔的view被選中

  unselect 圖片的狀態,表明其所佔的view沒有被選中

繪圖 shape

xml動畫(動畫類型_動畫方向。)

fade_in,淡入

fade_out,淡出

push_down_in,從下方推入

push_down_out,從下方推出

slide_in_from_top,從頭部滑動進入

zoom_enter,變形進入

shrink_to_middle,中間縮小

Strings的命名

類型_{範圍_}功能,範圍可選。如下爲幾種經常使用的命名:

頁面標題,命名格式爲:title_頁面

按鈕文字,命名格式爲:btn_按鈕事件

標籤文字,命名格式爲:label_標籤文字

選項卡文字,命名格式爲:tab_選項卡文字

消息框文字,命名格式爲:toast_消息

編輯框的提示文字,命名格式爲:hint_提示信息

圖片的描述文字,命名格式爲:desc_圖片文字

對話框的文字,命名格式爲:dialog_文字

menu的item文字,命名格式爲:action_文字

Colors的命名

前綴{_控件}{_範圍}{_後綴},控件、範圍、後綴可選,但控件和範圍至少要有一個。

背景顏色,添加bg前綴

文本顏色,添加text前綴

分割線顏色,添加div前綴

區分狀態時,默認狀態的顏色,添加normal後綴

區分狀態時,按下時的顏色,添加pressed後綴

區分狀態時,選中時的顏色,添加selected後綴

區分狀態時,不可用時的顏色,添加disable後綴

Style的命名  (單詞首字母大寫 ,以Style結尾) 

參照Drawable的命名方式,以Style結尾

控件的命名 控件縮寫_{範圍_}意義,範圍可選,只在有明肯定義的範圍內才須要加上。 

如:  txt_header_title   btn_login 

 

 

控件

縮寫

LayoutView

lv

RelativeView

rv

TextView

tv

Button

btn

ImageButton        

imgBtn

ImageView         

mgView 或則 iv

CheckBox           

chk

RadioButton        

rdoBtn

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


方法的命名

方法

說明

initXX()

 初始化相關方法,使用init爲前綴標識,如初始化佈局initView()

isXX()

 checkXX()方法返回值爲boolean型的請使用ischeck爲前綴標識

getXX()

 返回某個值的方法,使用get爲前綴標識

processXX() 

 對數據進行處理的方法,儘可能使用process爲前綴標識

displayXX()

 彈出提示框和提示信息,使用display爲前綴標識

saveXX()

 與保存數據相關的,使用save前綴標識

resetXX()

 對數據重組的,使用reset前綴標識

clearXX()

 清除數據相關的

removeXXX() 

 清除數據相關的

drawXXX()

 繪製數據或效果相關的,使用draw前綴標識

 

變量

variables)採用小駝峯命名法。類中控件名稱必須與xml佈局id保持一致。

常量

Constants)所有大寫,採用下劃線命名法.例如:MIN_WIDTH

常見縮寫下面爲常見的英文單詞縮寫:

名稱

縮寫

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)


程序中使用單詞縮寫原則:不要用縮寫,除非該縮寫是約定俗成的。 

 

 

其餘總結:

1.java代碼中不出現中文,最多註釋中能夠出現中文

2.局部變量命名、靜態成員變量命名

只能包含字母,單詞首字母除第一個外,都爲大寫,其餘字母都爲小寫

3.常量命名

只能包含字母和_,字母所有大寫,單詞之間用_隔開

4.圖片儘可能分拆成多個可重用的圖片

5.服務端能夠實現的,就不要放在客戶端

6.引用第三方庫要慎重,避免應用大容量的第三方庫,致使客戶端包很是大

7.處理應用全局異常和錯誤,將錯誤以郵件的形式發送給服務端

8.圖片的.9處理

9.使用靜態變量方式實現界面間共享要慎重

10.Log(系統名稱模塊名稱接口名稱,詳細描述)

11.單元測試(邏輯測試、界面測試)

12.不要重用父類的handler,對應一個類的handler也不該該讓其子類用到,不然會致使message.what衝突

13.activity中在一個View.OnClickListener中處理全部的邏輯

14.strings.xml中使用%1$s實現字符串的通配

15.若是多個Activity中包含共同的UI處理,那麼能夠提煉一個CommonActivity,把通用部分叫由它來處理,其餘activity只要繼承它便可

16.使用button+activitgroup實現tab效果時,使用Button.setSelected(true),確保按鈕處於選擇狀態,並使activitygroup的當前activity與該button對應

17.若是所開發的爲通用組件,爲避免衝突,將drawable/layout/menu/values目錄下的文件名增長前綴

18.數據必定要效驗,例如

字符型轉數字型,若是轉換失敗必定要有缺省值;

服務端響應數據是否有效判斷

 

快捷鍵和技巧 


 

參考Google I/O 2015的代碼結構,PBF具體能夠這樣作:

src

└─com

    └─domain

        └─app

            │  Config.java 配置數據、常量

            │

            ├─framework

            │      定義interface以及相關基類

            │

            ├─io

            │      數據定義(model)、數據操做(好比json解析,但不包括db操做)

            │

            ├─model

            │      定義model(數據結構以及getter/setter、compareTo、equals等等,不含複雜操做)

            │      以及modelHelper(提供便於操做model的api)

            │

            ├─provider

            │      實現ContentProvider,及其依賴的db操做

            │

            ├─receiver

            │      實現Receiver

            │

            ├─service

            │      實現Service(好比IntentService),用於在獨立線程中異步do stuff

            │

            ├─ui

            │      實現自定義view和widget,相關的Adapter也放這裏

            │

            ├─util

            │      實現工具類,提供靜態方法

            │

            ├─feature1

            │      Item.java                定義model

            │      ItemHelper.java          實現modelHelper

            │      feature1Activity.java    定義UI

            │      feature1DAO.java         私有db操做

            │      feature1Utils.java       私有工具函數

            │      ...其它私有class

            │

            ├─...其它feature

 



相關文章
相關標籤/搜索