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


如果你將源碼作為產品發布,就需要確認它是否被很好地打包並且清晰無誤,一如你已構建的其他任何產品。

作為軟件設計師,代碼即是產品;不僅需要實現功能,還需有“優美、大方”的外表。

 

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

1、駝峰(Camel)命名法:又稱小駝峰命名法,除首單詞外,其余所有單詞的第一個字母大寫。

2、帕斯卡(pascal)命名法:又稱大駝峰命名法,所有單詞的第一個字母大寫

3、下划線命名法:單詞與單詞間用下划線做間隔。

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

個人覺得標識符命名原則:盡可能的用最少的字符而又能完整的表達標識符的含義。

 

縮寫原則,比較常見的有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.標識符命名法和英文縮寫規范

標識符命名法和英文縮寫規則是整個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系統開發時使用的是什么命名規范?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM