Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 代碼規范

Android 代碼規范

編輯:關於Android編程

1.命名規范

1.1.通用規則

標識符只能使用ASCII字母和數字

1.2.各類標示符的規則

1.2.1.包名

包名全部小寫,連續的單詞只是簡單地連接起來,不使用下劃線; 采用反域名命名規則,全部使用小寫字母。一級包名為com/cn,二級包名為xx(可以是公司或則個人的隨便),三級包名根據應用進行命名,四級包名為模塊名或層級名,如:cn.rongcloud.im.activity

1.2.2.類名

類名能夠准確反映這個類的含義,所有單詞的首字母大寫,如登錄界面LogInActivity,好友信息FriendInfo文件工具類FileUtils等; 類名都以UpperCamelCase風格編寫; 盡量避免縮寫,除非該縮寫是眾所周知的,比如HTML,URL,如果類名稱中包含單詞縮寫,則單詞縮寫的每個字母均應大寫。 類 描述 Activity類 Activity為後綴標識 Adapter類 Adapter 為後綴標識 解析類 Parser為後綴標識 工具方法類 Util或Manager為後綴標識 自定義的共享基礎類 以Base開頭 ContentProvider 以Provider為後綴標識 Receiver類 以Receiver為後綴標識 Service類 以Service為後綴標識 數據庫類 以DBHelper後綴標識

1.2.3.方法名

方法名能夠准確反映這個方法的作用,首字母小寫,其他單詞的首字母大寫,如轉換成字符竄toString(); 方法名都以lowerCamelCase 風格編寫; 方法名通常是動詞或動詞短語。 方法 說明 initXX() 初始化相關方法,使用init為前綴標識,如初始化布局initView() isXX() checkXX() 方法返回值為boolean型的請使用is或check為前綴標識 getXX() 返回某個值的方法,使用get為前綴標識 handleXX() 對數據進行處理的方法,盡量使用handle為前綴標識 displayXX()/showXX() 彈出提示框和提示信息,使用display/show為前綴標識 saveXX() 與保存數據相關的,使用save為前綴標識 resetXX() 對數據重組的,使用reset前綴標識 clearXX() 清除數據相關的 removeXXX() 清除數據相關的 drawXXX() 繪制數據或效果相關的,使用draw前綴標識

1.2.4.常量

常量名命名模式為CONSTANT_CASE,全部字母大寫,用下劃線分隔單詞; 每個常量都是一個靜態final字段,但不是所有靜態final字段都是常量,在決定一個字段是否是一個常量時,考慮它是否真的感覺像是一個常量;例如,如果任何一個該實例的觀測狀態是可變的,則它幾乎肯定不會是一個常量,只是永遠不打算改變對象一般是不夠的,它要真的一直不變才能將它示為常量。

1.2.5.非常量的成員變量

非常量字段名以LowerCamelCase風格編寫;

scope 規則 非公有,非靜態字段 m+變量的含義 靜態字段 s+變量的含義 公有非靜態字段 p+變量的含義 公有靜態字段 g+變量的含義

public static final 字段(常量) 全部大寫,並用下劃線連起來。

public class MyClass {  
        public static final int SOME_CONSTANT = 42;  
        public int pField;  
        private static MyClass sSingleton;  
        int mPackagePrivate;  
        private int mPrivate;  
        protected int mProtected; 
        public static int gField; 
  }
與View相關的控件變量和普通變量

考慮到Android中使用很多UI控件,為避免控件和普通成員變量混淆以及更好達意,所有用來表示控件的成員變量統一加上控件名稱作為後綴,如標題的TextView,mTitleTextView;

對於普通變量一般不添加類型後綴,標題如mTitle;

1.2.6.局部變量

局部變量名以LowerCamelCase風格編寫,比起其它類型的名稱,局部變量名可以有更為寬松的縮寫; 雖然縮寫更寬松,但還是要避免用單字符進行命名,除了臨時變量和循環變量;即使局部變量是final和不可改變的,也不應該把它示為常量,自然也不能用常量的規則去命名它。
臨時變量

臨時變量通常被取名為i,j,k,m和n,它們一般用於整型;如:for (int i = 0; i < len ; i++),並且它和第一個單詞間沒有空格。

1.2.7.資源文件

1.2.7.1.資源布局文件(XML文件(layout布局文件)):

全部小寫,采用下劃線命名法
* contentview命名
必須以全部單詞小寫,單詞間以下劃線分割,使用名詞或名詞詞組。
所有Activity或Fragment的contentView必須與其類名對應,對應規則為:
1)將所有字母都轉為小寫,將類型和功能調換(也就是後綴變前綴)。
例如:activity_main.xml
2) Dialog命名:dialog_描述.xml
例如:dialog_hint.xml
3) PopupWindow命名:ppw_描述.xml
例如:ppw_info.xml
4) 列表項命名:item_描述.xml
例如:item_city.xml
5) 包含項命名:模塊_(位置)描述.xml
例如:activity_main_head.xml、activity_main_bottom.xml
注意:通用的包含項命名采用:項目名稱縮寫_描述.xml
例如:xxxx_title.xml

1.2.7.2.資源文件(圖片drawable文件夾下):

全部小寫,采用下劃線命名法,加前綴區分
命名模式:可加後綴 _small 表示小圖, _big 表示大圖,邏輯名稱可由多個單詞加下劃線組成,采用以下規則:
用途模塊名邏輯名稱
用途模塊名顏色
用途_邏輯名稱
用途_顏色
說明:用途也指控件類型(具體見UI控件縮寫表)

例如:

btn_main_home.png 按鍵 divider_maket_white.png 分割線 ic_edit.png 圖標 bg_main.png 背景 btn_red.png 紅色按鍵 btn_red_big.png 紅色大按鍵 ic_head_small.png 小頭像 bg_input.png 輸入框背景 divider_white.png 白色分割線
如果有多種形態如按鈕等除外如 btn_xx.xml(selector) 名稱 功能 btn_xx 按鈕圖片使用btn_整體效果(selector) btn_xx_normal 按鈕圖片使用btn_正常情況效果 btn_xx_pressed 按鈕圖片使用btn_點擊時候效果 btn_xx_focused state_focused聚焦效果 btn_xx_disabled state_enabled (false)不可用效果 btn_xx_checked state_checked選中效果 btn_xx_selected state_selected選中效果 btn_xx_hovered state_hovered懸停效果 btn_xx_checkable state_checkable可選效果 btn_xx_activated state_activated激活的 btn_xx_windowfocused state_window_focused bg_head 背景圖片使用bg_功能_說明 def_search_cell 默認圖片使用def_功能_說明 ic_more_help 圖標圖片使用ic_功能_說明 seg_list_line 具有分隔特征的圖片使用seg_功能_說明 sel_ok 選擇圖標使用sel_功能_說明

values中name命名

類別 命名 示例 類別 命名 示例 strings strings的name命名使用下劃線命名法,采用以下規則:模塊名+邏輯名稱 main_menu_about 主菜單按鍵文字 colors colors的name命名使用下劃線命名法,采用以下規則:模塊名+邏輯名稱 friend_info_bg styles styles的name命名使用 Camel命名法,采用以下規則:模塊名+邏輯名稱 main_tabBottom

2.格式規范

2.1.區塊劃分

常量聲明區
UI控件成員變量聲明區
普通成員變量聲明區
內部接口聲明區
初始化相關方法區
事件響應方法區
普通邏輯方法區
重載的邏輯方法區
發起異步任務方法區
異步任務回調方法區
生命周期回調方法區(出去onCreate()方法)
內部類聲明區

2.2.類成員排列通用規則

按照發生的先後順序排列
常量按照使用先後排列
UI控件成員變量按照layout文件中的先後順序排列
普通成員變量按照使用的先後順序排列
方法基本上都按照調用的先後順序在各自區塊中排列
相關功能作為小區塊放在一起(或者封裝掉

2.3.縮進標准

建立標准的縮進大小(如四個空格),並一致地使用此標准對代碼進行格式化;

2.4.變量聲明

不要使用組合聲明,比如int a, b;。
需要時才聲明,並盡快進行初始化
不要在一個代碼塊的開頭把局部變量一次性都聲明了(這是c語言的做法),而是在第一次需要使用它時才聲明。 局部變量在聲明時最好就進行初始化,或者聲明後盡快進行初始化。

2.5.修飾符

private:僅類的內部可獲取;
protected:類及其子類可獲取;
public:整個包名范圍內可獲取;

2.6.冗余代碼

避免多余的代碼,注釋掉的代碼和沒有實際使用代碼都要刪掉,不要保留;

3.Javadoc注釋

主要作用是便於其他人閱讀和理解代碼;

在每個程序的最開始部分,一般都用Javadoc注釋對程序的總體描述以及版權信息,之後在主程序中可以為每個類、接口、方法、字段添加Javadoc注釋,每個注釋的開頭部分先用一句話概括該類、接口、方法、字段所完成的功能,這句話應單獨占據一行以突出其概括作用,在這句話後面可以跟隨更加詳細的描述段落;
雖然為一個設計低劣的程序添加注釋不會使其變成好的程序,但是如果按照編程規范編寫程序並且為程序添加良好的注釋卻可以幫助你編寫出設計完美,運行效率高且易於理解的程序,尤其是在多人合作完成同一項目時編程規范就變得更加重要。

/**
*
* 設置用戶信息的提供者,供 RongIM 調用獲取用戶名稱和頭像信息。
* 設置後,當 sdk 界面展示用戶信息時,會回調 {@link io.rong.imkit.RongIM.UserInfoProvider#getUserInfo(String)}
* 使用者只需要根據對應的 userId 提供對應的用戶信息。
* 如果需要異步從服務器獲取用戶信息,使用者可以在此方法中發起異步請求,只需要返回 null 信息。
* 在異步請求結果返回後,根據返回的結果調用 {@link #refreshUserInfoCache(UserInfo)} 刷新用戶信息。
*
*
* @param userInfoProvider 用戶信息提供者 {@link io.rong.imkit.RongIM.UserInfoProvider}。
* @param isCacheUserInfo 設置是否由 IMKit 來緩存用戶信息。
* 如果 App 提供的 UserInfoProvider。
* 每次都需要通過網絡請求用戶數據,而不是將用戶數據緩存到本地,會影響用戶信息的加載速度;
* 此時最好將本參數設置為 true,由 IMKit 來緩存用戶信息。
*/

public static void setUserInfoProvider(UserInfoProvider userInfoProvider, boolean isCacheUserInfo)

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved