Android軟件設計規範---命名規則/代碼包設計規則等

若是你將源碼做爲產品發佈,就須要確認它是否被很好地打包而且清晰無誤,一如你已構建的其餘任何產品。java

做爲軟件設計師,代碼便是產品;不只須要實現功能,還需有「優美、大方」的外表。程序員

 

標識符命名法,標識符命名法最主要有4種:數據庫

一、駝峯(Camel)命名法:又稱小駝峯命名法,除首單詞外,其他全部單詞的第一個字母大寫。編程

二、帕斯卡(pascal)命名法:又稱大駝峯命名法,全部單詞的第一個字母大寫app

三、下劃線命名法:單詞與單詞間用下劃線作間隔。dom

四、匈牙利命名法:普遍應用於微軟編程環境中,在以Pascal命名法的變量前附加小寫序列說明該變量的類型。變量的取名方式爲:<scope_> + <prefix_> + <qualifier>分別表示:範圍前綴、類型前綴、限定詞。ide

我的以爲標識符命名原則:儘量的用最少的字符而又能完整的表達標識符的含義。函數

 

縮寫原則,比較常見的有3種:工具

1. 較短的單詞可去掉「元音」造成縮寫;佈局

2. 較長的單詞可取單詞的頭幾個字母造成縮寫;

3. 使用約定俗成的縮寫方式;

如:

average  --> avg  background --> bg  buffer --> buf  control --> ctrl

delete --> del  document --> doc  error --> err  escape --> esc

increment --> inc  infomation --> info  image --> img  initial --> init

internationalization --> i18N  length --> len  library --> lib  message --> msg

password --> pwd  position --> pos  server --> srv  string --> str  temp --> tmp

window--> wnd/win  context --> ctx  configuration --> cfg  compare --> cmp

clock --> clk  clear --> clr  device --> dev  disable --> dis

display --> disp  enable --> en  function --> func  maximum --> max

minimun --> min  parameter --> param

用正確的反義詞組命名具備互斥意義的變量或相反動做的方法:

add/remove  begin/end  create/destroy  insert/delete

first/last  get/set  increment/decrement  put/get

add/delete  lock/unlock  open/close  min/max

start/stop  next/previous  source/target  show/hide

send/receive  source/destination

 

包命名規範

採用反域名命名規則,所有使用小寫字母,一級和二級包名固定爲:com.james;三級包名根據應用進行命名,如:factorytest...四級包名爲模塊名或層級名。

工程中的Java文件分包:

com.james.adapter:Adapter類

com.james.domain:實體類,對象類

com.james.bean:元素類

com.james.utils:工具類

com.james.ui:視圖類

com.james.activity:頁面用到的Activity類

com.james.base:Android應用中使用到的基類

com.james.db:數據庫操做類

com.james.view:自定義的View類

com.james.service:服務類

com.james.broadcast:廣播類

com.james.constant: 常量字段類

com.james.widget: UI類

com.james.activity: Activity類

 

類(文件)、接口(文件)、方法的命名規範

類命名採用名詞,首字母大寫,避免使用單詞的縮寫(除非是總所周知的)--- Class Person

activity類:以Activity爲後綴標識,如WelcomActivity歡迎頁面;

Adapter類:以Adapter爲後綴標識,如NewDetailAdapter新聞詳情適配器;Adapter文件命名規範:負責提供數據,爲數據適配器。每一個類命名爲:界面名+Adapter,如MainItemAdapter

Tools或Manager類:經常使用的工具或管理類,如ThreadPoolManager類,LogTools日誌工具類;

DBHelpter類:數據庫類,如NewDBHelper類,新聞數據庫類;

Service類:服務類,如TimeService類,時間服務類;

ContentProvider類:以Provider爲後綴標識,內容提供類;

基類:以Base開頭,如BaseActivity,BaseFragment類;

接口命名採用形容詞或副詞,首字母一樣大寫,多以-able或-ible結尾 --- Interface Runnable

接口名前面須要加上I,以代表此名字爲接口。

對於回調接口:實現Observer模式的接口,回調接口名稱以Observer結尾;與Android相關的接口以Listener結尾;從NDK回調回Java的代碼函數能夠Callback結尾。

方法名採用動詞和名詞的組合形式,第一個單詞通常是動詞,採用匈牙利式的命名規範;若方法返回或設置成員變量的值,使用 getXxx()、setXxx();若返回的是boolean類型的值,通常採用is做爲前綴 --- isCancel isRunning

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

isXxx()或checkXxx():該方法返回值爲boolean;

getXxx():返回某個值得方法;

processXxx():對數據進行處理的方法;

saveXxx():與保存數據相關的方法;

 

變量命名規範

首字母小寫,其餘單詞首字母大寫,採用匈牙利式變量命名法 --- int indexCount;

儘可能使用短並且有意義的單詞(避免使用縮寫) --- boolean isThreadStop;

單字符的變量名通常只用於生命期很是短暫的變量 --- int i, k;

若是變量是集合,則變量名用複數 --- int[] numbers;

類內部的屬性變量通常加前綴m,後面跟上變量屬性和功能屬性 --- Button mBtnStart;

非公有、非靜態的變量以m開頭;靜態變量以s開頭;其餘變量以小寫字母開頭。

全部常量名均大寫,使用「_」間隔 --- int MAX_NUMBER;

與佈局相關的控件變量命名規範

在爲Android中的佈局、控件的變量命名時常常會使用到一些縮寫,常見縮寫以下:

Llay --> LinearLayout

Rlay --> RelativeLayout

Tlay --> TableLayout

Sv --> ScrollView

Btn --> Button

Iv --> ImageView

Tv --> TextView

Et --> EditText

Mp --> MapView

Cb --> CheckBox

Rg --> RadioGroup

Rb --> RadioButton

Sp --> Spinner

Gv --> GridView

Lv –> ListView

類中的控件變量名必須與.xml佈局id保持一致。

若控件變量爲類的字段,以m開頭;

控件變量名命名規則:類型+功能。如:mBtnBeginTest...

對象類變在方法體結束後,手動設置爲null,以利於資源回收。

不要使用原義數字或原義字符串,而是使用命名常量,以便於維護。如NUM_DAYS_IN_WEEK

 

xml文件命名規範

res/layout文件夾下的.xml文件,統一用小寫和下劃線「_」組合命名 --> 模塊名_功能名.xml

res/drawable文件中的資源:統一用小寫和下劃線「_」組合命名 --> 待使用文件名_邏輯名稱,main_default.png

UI類文件命名規範:顯示每一個UI界面,每一個類命名爲:XxxActivity;同時界面類名和相應的.xml文件相同。如:Login.xml對應的類名爲LoginActivity。

.xml佈局文件所有采用小寫,使用下劃線命名;

adapter的子佈局:功能模塊_item.xml,如:main_item.xml

 

資源文件命名規範

資源文件(drawable文件夾下的文件),所有小寫,採用下滑線的形式命名。

btn_功能_說明:爲按鍵命名

bg_功能_說明:爲背景命名

def_功能_說明:爲默認的資源文件命名

icon_功能_說明:爲圖標命名

命名後綴:

select:圖片狀態,表明選中狀態

unselect:圖標狀態,表明未選中狀態

...

 

.xml佈局文件中控件id命名規範

view縮寫_模塊名稱_view的邏輯名稱

首個單詞爲控件類型的縮寫,其後爲.xml文件的文件名,最後爲控件功能名 ---> iv_login_logo

 

Android應用程序中常量定義

類中定義一些常量,如字符串常量或字符串常量,要定義爲全局變量。

public static final int MENU_ABOUT= 0;

字符串常量能夠定義在/res/values/strings.xml中,字符串名稱的首字母小寫,單詞之間用「_」分割,前者爲.xml文件名(用途),後者爲其功能。

.xml文件中的尺寸參數定義在/res/values/dimens.xml文件中,首字母小寫,單詞之間用「_」間隔;首個單詞爲此控件所屬xml文件名,其二爲控件id,其三爲控件屬性。

 

代碼註釋

源代碼中儘可能避免連續多行,應根據功能使用空行把代碼適當地分段,代碼段功能儘可能清晰;如不能在30秒內理解代碼功能,應爲之添加註釋予以說明。

源程序中要有適當的註釋。

註釋有助於裂解代碼,有效的註釋是指在代碼的功能、意圖層次上進行註釋,提供有用的、額外的信息,而不是代碼表面意義的簡單重複。

包含在「{}」中代碼塊的結束處要進行註釋,便於閱讀。特別是多分支、多重嵌套的條件語句或循環語句。對分支語句(條件分支、循環語句)必須編寫註釋。

 

代碼格式

通常禁止使用製表符,必須使用空格進行縮進。一個製表符使用四個空格替代。

不一樣邏輯程序塊之間要使用空行分割。空行起着分割程序段落的做用,適當的空行可使程序的佈局更加清晰。

源代碼嚴格遵循一致的縮進規則。

錯誤處理規範

Log的使用規範:

項目中使用自定義的Log輸出函數,此函數的參數與Android的Log函數一致,能夠根據常量控制是使用標準Log輸出,仍是寫入到文件。

與之對應的條件編譯:

爲了使得最終編譯的release版本不包含有Log信息,通常使用如下的作法:先定義獨立的DebugFlag類:

在須要輸出Log的時候,使用以下方式:

由於所定義的常量都是final類型的,若把這些常量設置爲false,則編譯器會優化,移除與輸出Log相關的代碼。

 

Android項目命名規範

通常是本身懂得嚴格命名規範對程序員的意義,可以參考Google Android SDK等優秀開源庫的命名規範或者其餘;此外在參與開發時,須要遵循統一命名規範,還須要對統一的規範加以說明。總之,須要作方面的工做:其1、養成遵循嚴格的命名規範的習慣;其2、以註釋的形式統一說明本身或團隊的命名規範。如下對我瞭解到的命名規範釋,之後會在編程過程當中逐步養成習慣,並延續這些習慣。

1.標識符命名法和英文縮寫規範

標識符命名法和英文縮寫規則是整個Android項目命名規範的基礎,而靈活使用英文中的各種詞性,好比:名詞、動詞、形容詞和副詞等等,都可以爲程序員帶來更多的可用信息,而不至於拿到一個控件或資源後猜想不出有什麼用途。

1.1.標識符命名法

標識符命名法主要有四種:

其一:駝峯命名法,除首單詞外,其他全部單詞的第一個字母大寫;

其二:帕斯卡命名法,全部單詞的第一個字母大寫;

其三:下劃線命名法,單詞與單詞之間用下劃線作間隔;

其四:匈牙利命名法,應用於微軟編程環境中,變量取名方式:<name_scope_>+<type_prefix_>+<qualifier>分別表示範圍前綴、類型前綴和變量限定詞。

標識符命名法實例說明:

1.2.英文縮寫

英文縮寫原則:

其一:較短的單詞可經過去掉「元音」造成縮寫;

其二:較長的單詞可取單詞的頭幾個字母造成縮寫;

其三:可使用約定俗成的英文單詞縮寫。

常見英文縮寫實例說明:

2.命名規範

2.1.包命名規範——Package

包名:採用反域名命名規則,所有使用小寫字母。一級包名爲com,二級包名爲groupname(能夠是公司或我的命名取的名詞),三級包名根據應用程序名來取名,四級包名爲模塊名或層級名。好比:com.itheima.myapplicationname,表示itheima機構寫的應用程序包名。

包名中涉及到的單詞均使用英文名詞。

包名命名規則舉例:

com.xxx.xxx.activity:頁面用到的Activity類,面向於用戶界面層;

com.xxx.xxx.base:頁面中每一個Activity類共享的數據(基礎共享的類);

com.xxx.xxx.adapter:頁面用到的Adapter類;

com.xxx.xxx.tools/utils:公共工具方法類;

com.xxx.xxx.bean/entity/domain:元素類,抽取出的JavaBean;

com.xxx.xxx.db:數據庫操做類;

com.xxx.xxx.view/ui:自定義的View類;

com.xxx.xxx.service:Service服務;

com.xxx.xxx.broadcast:Broadcast服務;

2.2.類名規範——Class

類名必須是名詞,常採用帕斯卡命名規則(每一個單詞的首字母都必須大寫),儘可能避免縮寫;

除非是約定俗成的名稱,類名稱中包含單詞縮寫的每一個字母均應大寫或者是首字母大寫,例如:URL、HTML、HTTP等。

類名規範舉例說明:

Activity類:WelcomeActivity、CourseActivity等;

Adapter類:NewDetailAdatper等;

公共方法類:ThreadPoolManager、LogTools等;

數據庫類:NewDBHelper等;

Service類:TimeService等;

BroadcastReceiver類:TimeBroadcastReceiver等;

2.3.接口規範——Interface

接口命名規範和類規範同樣採用帕斯卡命名規範,多以-able或-ible結尾(形容詞或者副詞),用以表示具有的一種功能,如Runnable、Accessible等。

2.4.方法規範——method

常見於動詞或者動名詞,採用駝峯命名法,如onCreate()等。

例如:

initXxx():初始化相關方法,使用init-做爲前綴,例如:初始化佈局initView();

isXxx():isXxxx()或者checkXxx()返回值爲指定類型,使用is-或者check-爲前綴;

getXxx():返回某種類型的值,使用get-爲前綴;

processXxx():對數據進行處理,以process-爲前綴;

displayXxx():彈出提示框或提示信息,以display-爲前綴;

saveXxx():保存數據相關的方法,以save-爲前綴;

resetXxx():對數據重置,或者是界面重置,使用reset-爲前綴;

clearXxx():清除操做相關,使用clear-爲前綴;

drawXxx():繪製數據或效果相關,使用draw-爲前綴。

2.5.變量——variety

Android中變量的命名都採用駝峯命名規範,常見於名詞。

2.5.1.普通變量命名規範

在須要表示一組變量的狀況中,結尾處使用統一的量詞,能夠建立更加統一的變量,好比:

_First表示一組變量中的第一個;

_Last表示一組變量中的最後一個;

_Next表示一組變量中的下一個;

_Pre表示一組變量中的上一個;

_Cur表示一組變量中的當前變量;

2.5.2.控件變量命名規範

控件變量採用駝峯命名法,且類中的控件名稱必須和.xml佈局文件中的id保持一致;

此外,若是該變量是全局的,應該在其以前加上m,通常遵循:控件類型_功能的模式,例如:mTvVersion表示與具備Version功能的TextView控件相對應的全局變量名。

控件變量位於某個.xml文件對應的.java文件中,該Java文件的內容以及命名內容輸出了詳細的關於控件執行的邏輯信息,在對控件命名時只須要給出控件的類型及其功能便可,業務邏輯能夠省略。

2.6.常量——CONSTANT

常量所有用大寫,採用下劃線命名法,常使用名詞。

好比,使用符號常量值代替字面值,將有意義的信息帶給程序員。

MIN_WIDTH表示最小的寬度值;

RESULT_PARSE_JSON_EXCEPTION;

RESULT_SUCCESS;

RESULT_NETWORK_EXCEPTION;

RESULT_NO_DATA;

代碼中不容許出現直接硬編碼的字面常量,若是是控件上顯示的文本,必須放在/res/values/string.xml資源文件中;若是是代碼中用到的常量字符串,必須定義成public static final String類型的常量值。

在Activit之間傳遞的參數,intent.putExtra(key, value)使用的key值也應該統必定義爲靜態常量,不能直接硬編碼在代碼中。

2.7.資源文件及其控件命名規範——resource&&id

資源文件主要指存放在/res目錄下的文件,其命名所有采用小寫,用下劃線命名法。

2.7.1.Layout資源文件

Layout資源文件有多種,每種文件的命名規範均使用文件功能開頭,如activity-、fragment-等。

activity資源文件:activity_description1_description2.xml;

fragment資源文件:fragment_description1_description2.xml;

drawable資源文件:controlName_description1_description2_selector.xml,其中controlName表示該資源要用在什麼類型的控件上,例如:若是是按鍵的圖片切換,則使用button_bg_sendmessage_selector.xml;selector表示該資源的形式,還好比:shape等。

顏色值的命名:color_description以color爲前綴,description既能夠是該顏色的功能描述,也能夠是具體的顏色。例如:color_white、color_grey、color_button_pressed等。

2.7.2.控件的ID命名規範

參考模式:業務邏輯_控件類型_功能。

例如:splash_tv_version:表示該控件是使用splash業務邏輯中具備版本控制功能的TextView;user_btn_register表示該控件是使用在user業務中具備register功能的Button。

此外須要注意的是:.xml文件中的控件ID必須和.java文件中對應的控件對象名保持一致。

3.優秀資源參考——Google

Google在Android系統開發時使用的是什麼命名規範?

相關文章
相關標籤/搜索