if、else、for、switch、while等邏輯關鍵字與後面的語句留一個空格隔開。
將邏輯相關的代碼段用空行隔開,以提升可讀性。空行也只空一行,不要空多行。在如下狀況需用一個空行:
· 兩個方法之間
· 方法內的兩個邏輯段之間
· 方法內的局部變量和方法的第一條邏輯語句之間
· 常量和變量之間
Windows:CTRL+ALT+L
Mac:OPTION+COMMAND+L
Java文件命名規範
l Activity (模塊名+功能名+Activity)
l Adapter (模塊名+功能名+Adapter)
l 解析類 (Hlr爲後綴標識)
l 公共方法 (Tools)
l 數據庫 (Db ,Sp 爲後綴標識)
l Service (Service 爲後綴標識)
l BroadcastReceive (Broadcast 爲後綴標識)
l ContentProvider (Provider爲後綴標識)
l 共享基礎類(Base開頭)
l 實體類 (Model)
l 接口 (以lmpl爲後綴)
l AppApplication 定義Application類
l AppConfig 定義配置數據(常量)
資源文件命名規範 (小寫)
Layout
l Activity act_activity所在包的page爲中綴_功能名稱
l Fragment fra_所在的activity_功能名稱
l Adpter adpter_功能模塊_tem
l Item item_類型_ /item_adpter_
l Dialog dlg_
l PopupWindow ppw_
l Include include_
l Merge merge_
l 組合控件 comb_功能
l 動態佈局添加 dyn_
res目錄下的命名規範(小寫)
Drawable
l 圖標圖片 ico_
l 按鈕圖片(前綴{_控件}{_範圍}{_後綴},控件、範圍、後綴可選,但控件和範圍至少要有一個)
按壓背景 btn_效果(選中效果) btn_正常效果_normal btn_點擊時的效果_press
經常使用前綴
默認背景 def_功能_說明
背景 bg_功能_說明
分割特徵 div_功能_說明
選擇 sel_功能_說明
經常使用後綴:
nor 圖片的狀態,表明普通狀態
hl 圖片的狀態,表明高亮狀態
press 圖片的狀態,表明按下狀態
Select 圖片的狀態,表明其所佔的view被選中
unselect 圖片的狀態,表明其所佔的view沒有被選中
l 繪圖 shape
l xml動畫(動畫類型_動畫方向。)
fade_in,淡入
fade_out,淡出
push_down_in,從下方推入
push_down_out,從下方推出
slide_in_from_top,從頭部滑動進入
zoom_enter,變形進入
shrink_to_middle,中間縮小
Strings的命名
類型_{範圍_}功能,範圍可選。如下爲幾種經常使用的命名:
l 頁面標題,命名格式爲:title_頁面
l 按鈕文字,命名格式爲:btn_按鈕事件
l 標籤文字,命名格式爲:label_標籤文字
l 選項卡文字,命名格式爲:tab_選項卡文字
l 消息框文字,命名格式爲:toast_消息
l 編輯框的提示文字,命名格式爲:hint_提示信息
l 圖片的描述文字,命名格式爲:desc_圖片文字
l 對話框的文字,命名格式爲:dialog_文字
l menu的item文字,命名格式爲:action_文字
Colors的命名
前綴{_控件}{_範圍}{_後綴},控件、範圍、後綴可選,但控件和範圍至少要有一個。
l 背景顏色,添加bg前綴
l 文本顏色,添加text前綴
l 分割線顏色,添加div前綴
l 區分狀態時,默認狀態的顏色,添加normal後綴
l 區分狀態時,按下時的顏色,添加pressed後綴
l 區分狀態時,選中時的顏色,添加selected後綴
l 區分狀態時,不可用時的顏色,添加disable後綴
Style的命名 (單詞首字母大寫 ,以Style結尾)
參照Drawable的命名方式,以Style結尾
l 控件的命名 控件縮寫_{範圍_}意義,範圍可選,只在有明肯定義的範圍內才須要加上。
如: 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型的請使用is或check爲前綴標識
|
getXX()
|
返回某個值的方法,使用get爲前綴標識
|
processXX()
|
對數據進行處理的方法,儘可能使用process爲前綴標識
|
displayXX()
|
彈出提示框和提示信息,使用display爲前綴標識
|
saveXX()
|
與保存數據相關的,使用sav爲e前綴標識
|
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