Android技術(shù)積累:開發(fā)規(guī)范

轉(zhuǎn)載自Keegan小鋼

原文鏈接:http://keeganlee.me/post/android/20150709

書寫規(guī)范

1. 編碼方式統(tǒng)一用UTF-8. Android Studio默認(rèn)已是UTF-8,只要不去改動它就可以了。

2. 縮進統(tǒng)一為4個空格,將Tab size設(shè)置為4則可以保證tab鍵按4個空格縮進。另外,不要勾選上Use tab character,可以保證切換到不同tab長度的環(huán)境時還能繼續(xù)保持統(tǒng)一的4個空格的縮進樣式。

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

publicvoidmethod(){// Good}publicvoidmethod(){// Bad}publicvoidmethod(){// Bad}

4. 空格的使用

if、else、for、switch、while等邏輯關(guān)鍵字與后面的語句留一個空格隔開。

// Goodif(booleanVariable){// TODO while booleanVariable is true}else{// TODO else}// Badif(booleanVariable){// TODO while booleanVariable is true}else{// TODO else}

運算符兩邊各用一個空格隔開。

intresult=a+b;//Good, = 和 + 兩邊各用一個空格隔開intresult=a+b;//Bad,=和+兩邊沒用空格隔開

方法的每個參數(shù)之間用一個空格隔開。

publicvoidmethod(Stringparam1,Stringparam2);// Good,param1后面的逗號與String之間隔了一個空格method(param1,param2);// Good,方法調(diào)用時,param1后面的逗號與param2之間隔了一個空格method(param1,param2);// Bad,沒有用一個空格隔開

5. 空行的使用

將邏輯相關(guān)的代碼段用空行隔開,以提高可讀性??招幸仓豢找恍?,不要空多行。在以下情況需用一個空行:

兩個方法之間

方法內(nèi)的兩個邏輯段之間

方法內(nèi)的局部變量和方法的第一條邏輯語句之間

常量和變量之間

6. 當(dāng)一個表達(dá)式無法容納在一行內(nèi)時,可換行顯示,另起的新行用8個空格縮進。

someMethod(longExpression1,longExpression2,longExpression3,longExpression4,longExpression5);

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

privateStringparam1;// 參數(shù)1privateStringparam2;// 參數(shù)2

8. 行寬設(shè)置為100,設(shè)置格式化時自動斷行到行寬位置。

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

Windows:CTRL+ALT+L

Mac:OPTION+COMMAND+L

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

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

// 用枚舉類定義,GoodpublicenumCouponType{// 現(xiàn)金券@SerializedName("1")CASH,// 抵用券@SerializedName("2")DEBIT,// 折扣券@SerializedName("3")DISCOUNT}// 用整型定義,BadpublicstaticfinalintTYPE_CASH=1;// 現(xiàn)金券publicstaticfinalintTYPE_DEBIT=2;// 抵扣券publicstaticfinalintTYPE_DISCOUNT=3;// 折扣券

12. 文字大小的單位統(tǒng)一用sp,元素大小的單位統(tǒng)一用dp。

13. 應(yīng)用中的字符串統(tǒng)一在strings.xml中定義,然后在代碼和布局文件中引用。

14. 顏色值統(tǒng)一在colors.xml中定義,然后在代碼和布局文件中引用。另外,不要在代碼和布局文件中引用系統(tǒng)的顏色,除了透明。

命名規(guī)范

1. 包命名

域名反寫+項目名稱+模塊名稱,全部單詞用小寫字母。

例如,我的KAndroid項目的Model模塊包名如下:

me.keeganlee.kandroid.model

2. 類和接口命名

使用大駝峰規(guī)則,用名詞或名詞詞組命名,每個單詞的首字母大寫。

以下為幾種常用類的命名:

activity類,命名以Activity為后綴,如:LoginActivity

fragment類,命名以Fragment為后綴,如:ShareDialogFragment

service類,命名以Service為后綴,如:DownloadService

adapter類,命名以Adapter為后綴,如:CouponListAdapter

工具類,命名以Util為后綴,如:EncryptUtil

模型類,命名以BO為后綴,如:CouponBO

接口實現(xiàn)類,命名以Impl為后綴,如:ApiImpl

3. 方法命名

使用小駝峰規(guī)則,用動詞命名,第一個單詞的首字母小寫,其他單詞的首字母大寫。

以下為幾種常用方法的命名:

初始化方法,命名以init開頭,例:initView

按鈕點擊方法,命名以to開頭,例:toLogin

設(shè)置方法,命名以set開頭,例:setData

具有返回值的獲取方法,命名以get開頭,例:getData

通過異步加載數(shù)據(jù)的方法,命名以load開頭,例:loadData

布爾型的判斷方法,命名以is或has,或具有邏輯意義的單詞如equals,例:isEmpty

4. 控件縮寫

控件縮寫控件縮寫

TextViewtxtEditTextedt

ButtonbtnImageButtonibtn

ImageViewimgListViewlist

RadioGroupgroupRadioButtonrbtn

ProgressBarprogressSeekBarseek

CheckBoxchkSpinnerspinner

TableLayouttableTableRowrow

LinearLayoutllayoutRelativeLayoutrlayout

ScrollViewscrollSearchViewsearch

TabHosthostTabWidgetwidget

5. 常量命名

全部為大寫單詞,單詞之間用下劃線分開。

publicfinalstaticintPAGE_SIZE=20;

6. 變量命名

{范圍描述+}意義描述+類型描述的組合,用駝峰式,首字母小寫。

privateTextViewheaderTitleTxt;// 標(biāo)題欄的標(biāo)題privateButtonloginBtn;// 登錄按鈕privateCouponBOcouponBO;// 券實例

7. 控件id命名

控件縮寫_{范圍_}意義,范圍可選,只在有明確定義的范圍內(nèi)才需要加上。

8. layout命名

組件類型_{范圍_}功能,范圍可選,只在有明確定義的范圍內(nèi)才需要加上。

以下為幾種常用的組件類型命名:

activity_{范圍_}功能,為Activity的命名格式

fragment_{范圍_}功能,為Fragment的命名格式

dialog_{范圍_}功能,為Dialog的命名格式

item_list_{范圍_}功能,為ListView的item命名格式

item_grid_{范圍_}功能,為GridView的item命名格式

header_list_{范圍_}功能,為ListView的HeaderView命名格式

footer_list_{范圍_}功能,為ListView的FooterView命名格式

9. strings的命名

類型_{范圍_}功能,范圍可選。

以下為幾種常用的命名:

頁面標(biāo)題,命名格式為:title_頁面

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

標(biāo)簽文字,命名格式為:label_標(biāo)簽文字

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

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

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

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

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

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

10. colors的命名

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

背景顏色,添加bg前綴

文本顏色,添加text前綴

分割線顏色,添加div前綴

區(qū)分狀態(tài)時,默認(rèn)狀態(tài)的顏色,添加normal后綴

區(qū)分狀態(tài)時,按下時的顏色,添加pressed后綴

區(qū)分狀態(tài)時,選中時的顏色,添加selected后綴

區(qū)分狀態(tài)時,不可用時的顏色,添加disable后綴

11. drawable的命名

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

圖標(biāo)類,添加ic前綴

背景類,添加bg前綴

分隔類,添加div前綴

默認(rèn)類,添加def前綴

區(qū)分狀態(tài)時,默認(rèn)狀態(tài),添加normal后綴

區(qū)分狀態(tài)時,按下時的狀態(tài),添加pressed后綴

區(qū)分狀態(tài)時,選中時的狀態(tài),添加selected后綴

區(qū)分狀態(tài)時,不可用時的狀態(tài),添加disable后綴

多種狀態(tài)的,添加selector后綴(一般為ListView的selector或按鈕的selector)

12. 動畫文件命名

動畫類型_動畫方向。

fade_in,淡入

fade_out,淡出

push_down_in,從下方推入

push_down_out,從下方推出

slide_in_from_top,從頭部滑動進入

zoom_enter,變形進入

shrink_to_middle,中間縮小

注釋規(guī)范

1. 文件頭注釋

文件頂部統(tǒng)一添加版權(quán)聲明,聲明的格式如下:

/*** Copyright (c) 2015. Keegan小鋼 Inc. All rights reserved.*/

2. 類和接口注釋

類和接口統(tǒng)一添加javadoc注釋,格式如下:

/*** 類或接口的描述信息** @author ${USER}* @date ${DATE}*/

3. 方法注釋

下面幾種方法,都必須添加javadoc注釋,說明該方法的用途和參數(shù)說明,以及返回值的說明。

接口中定義的所有方法

抽象類中自定義的抽象方法

抽象父類的自定義公用方法

工具類的公用方法

/*** 登錄** @param loginName 登錄名* @param password? 密碼* @param listener? 回調(diào)監(jiān)聽器*/publicvoidlogin(StringloginName,Stringpassword,ActionCallbackListenerlistener);

4. 變量和常量注釋

下面幾種情況下的常量和變量,都要添加注釋說明,優(yōu)先采用右側(cè)//來注釋,若注釋說明太長則在上方添加注釋。

接口中定義的所有常量

公有類的公有常量

枚舉類定義的所有枚舉常量

實體類的所有屬性變量

publicstaticfinalintTYPE_CASH=1;// 現(xiàn)金券publicstaticfinalintTYPE_DEBIT=2;// 抵扣券publicstaticfinalintTYPE_DISCOUNT=3;// 折扣券privateintid;// 券idprivateStringname;// 券名稱privateStringintroduce;// 券簡介

結(jié)束語

這份開發(fā)規(guī)范說明比較細(xì),也許還不是非常完整,但里面提到的每一條規(guī)范都很有用。按照此規(guī)范嚴(yán)格執(zhí)行,將大大提高代碼的可讀性和維護性。

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

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

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