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

Android開發規范詳解

編輯:關於Android編程

Google官方Java代碼風格參考規范鏈接, 中文翻譯參考版鏈接。

命名規范

1. 包命名

規則:包名全部小寫,才用反域名命名規則,一級包名是頂級域名,通常為com, edu, gov, net, org等,二級包名,通過為公司名或部門名或者個人名,三級包名通常為項目名,四級包名為模塊名或者層級名。以下是從層級包名來劃分android項目中采用的包劃分結構

com.domain.xxx.activity  //用戶界面中所有的Activity類
com.domain.xxx.fragment  //界面中所有的Fragment類
com.domain.xxx.adapter   //界面中所有的Adapter類(適配器類)
com.domain.xxx.view      //自定義的View類
com.domain.xxx.service   //後台Service類
com.domain.xxx.util      //項目中常用的公共工具類(網絡, IO, 日志等)
com.domain.xxx.bean      //實體模型類
com.domain.xxx.db        //數據庫操作相關的類
com.domain.xxx.config    //所有的配置相關的類
com.domain.xxx.api       //網絡api接口相關de 類

2. 類命名

規則:采用大駝峰式命名法,首字母大寫,盡量避免縮寫,除非該縮寫是眾所周知的,比如HTML,URL,如果類名稱包含單詞縮寫,則單詞縮寫的每個字母均應大寫。以下列舉的是android中幾種最為常用的類的命名。

class LoginActivity;     //activity類
class DiscoverFragment;  //fragment類
class AnalysisService;   //service類
class WakeupRankAdapter; //adapter類
class StringUtils;       //工具類
class UserBean;          //模型類
class ApiImpl;           //接口實現類

3. 接口命名

規則:命名規則與類命名一樣采用大駝峰式命名法,首字母大寫,多以able, ible, er結尾

interface Comparable;
interface Accessible;
interface OnClickListener;

4. 方法

規則:采用小駝峰命名法,首字母小寫,方法名采用動詞或動名詞結構。方法的命名應該與方法的真正行為具有對應關系,下面給出一些方法名的動詞前綴標示的建議。

方法名 描述 getXX() 獲取某個屬性的返回值 setXX() 設置某個屬性值 initXX() 初始化方法,如初始化布局initView() isXX() 判斷是否true的方法; checkXX() 與isXX意義等價 processXX() 處理數據 updateXX() 更新數據 saveXX() 保存數據 addXX() 添加數據 deleteXX() 刪除數據 resetXX() 重置數據 clearXX() 清除數據 removeXX() 移除數據或者視圖等,如removeView(); drawXX() 繪制數據或者視圖

5. 變量

規則:采用小駝峰命名法,首字母小寫。變量名應簡短且能描述其用途,盡量避免拼音,無意義地縮寫。除非是臨時變量,否則不建議使用單個字符的變量名,如i, j, k。對於變量命名,還有一種風格是google的以字母m為前綴(m為member縮寫),在android 源碼中隨處可見。

private int userName;  //java的一般性風格
private int mUserName; //google的成員變量風格,m為member的縮寫

6. 常量

規則:常量使用全大寫字母加下劃線的方式命名。

public static final int TAG= "tag";
public static final int START_CLASS_NOT_FOUND = -2;

下面介紹的與android關系更加緊密:

7. 控件變量名

規則:首先需要滿足第5條變量的規則, 模式:邏輯名 + view縮寫

Button sendNewsBtn;
TextView passwordTxt;

8. 控件ID

規則:view縮寫_模塊名_邏輯名

android:id="@+id/btn_news_send"  //樣例

view縮寫如下:

View 縮寫 TextView txt EditText edit Button btn ImageButton ibtn ImageView img ListView lv RadioGroup rgroup RadioButton rbtn ProgressBar rbar SeekBar seek CheckBox cb Spinner spinner TableLayout table TableRow row LinearLayout ll RelativeLayout rl ScrollView scroll SearchView search TabHost thost TabWidget twidget

9. 資源文件名

9.1 layout的文件命名

規則:全部小寫,采用下劃線命名法。layout文件命名:組件類型_{模塊_}功能.xml

activity_news_title.xml //樣例
命名規范 組件類型 activity_{模塊_}功能 Activity命名格式 fragment_{模塊_}功能 Fragment命名格式 dialog_{模塊_}功能 Dialog命名格式 popup_{模塊_}功能 PopupWindow命名格式 item_list_{模塊_}功能 ListView的item命名格式 item_grid_{模塊_}功能 GridView的item命名格式

9.2 drawable的文件命名

模式:前綴{_控件}{_范圍}{_後綴},控件、范圍、後綴可選

bg_login_pressed.png //樣例
drawable 命名細則 圖標類 添加ic前綴 背景類 添加bg前綴 分隔類 添加div前綴 默認類 添加def前綴 區分狀態時,默認狀態 添加normal後綴 區分狀態時,按下時的狀態 添加pressed後綴 區分狀態時,選中時的狀態 添加selected後綴 區分狀態時,不可用時的狀態 添加disable後綴 多種狀態的 添加selector後綴

9.3 動畫的文件命名

規則:{范圍_}動畫類型_動畫方向。

login_fade_in.xml //樣例
動畫命名 描述 fade_in 淡入 fade_out 淡出 push_down_in 從下方推入 push_down_out 從下方推出 slide_in_from_top 從頭部滑動進入 zoom_enter 變形進入 shrink_to_middle 中間縮小

10. 資源內的name命名

10.1 strings.xml

模式:activity名_{范圍_}邏輯名

<string name="login_username">用戶名</string> //樣例

10.2 colors.xml

模式:前綴{_控件}{_范圍}{_後綴}, 控件、范圍、後綴可選,

<color name="bg_login">#FFFFFF</color> //樣例
colors 命名細則 背景顏色 添加bg前綴 文本顏色 添加text前綴 分割線顏色 添加div前綴 區分狀態時,默認狀態的顏色 添加normal後綴 區分狀態時,按下時的顏色 添加pressed後綴 區分狀態時,選中時的顏色 添加selected後綴 區分狀態時,不可用時的顏色 添加disable後綴

代碼風格

原則

  • 不要直接忽略Exceptions

    例如下面的示例,永遠不要這樣做,無法預測未來可能的變化

      void setServerPort(String value) {
          try {
              serverPort = Integer.parseInt(value);
          } catch (NumberFormatException e) { }
      }
    

    正確的做法應該如下:

      void setServerPort(String value) throws ConfigurationException {
          try {
              serverPort = Integer.parseInt(value);
          } catch (NumberFormatException e) {
              throw new ConfigurationException("Port " + value + " is not valid.");
          }
      }
    
  • import采用完全限定名

    不提倡:

      import foo.*;
    

    正確做法:

      import foo.Bar;
    
  • 括號風格:

    不提倡:

      if (condition)
          body();
    

    正確做法:

      if (condition) {
          body();
      }
    
  • 使用空格來縮進

    使用4個空格縮進來代表塊,而絕不使用tab鍵; 使用8個空格來代表行包裹,包括函數調用。

注釋

  • 1.類注釋 每個類完成後應該有作者姓名和聯系方式的注釋,對自己的代碼負責

    /** * 作者: yuanhh * 時間: 13-12-20 19:25 * 描述: 用戶登錄 * 聯系方式: [email protected] */ public class Login{ … }

  • 2.方法注釋 每一個成員方法(包括自定義成員方法、覆蓋方法、屬性方法)的方法頭都必須做方法頭注釋

    /* * 方法名: * 功 能: * 參 數: * 返回值:無 */

  • 3.快注釋

    private class MessageObserver extends ContentObserver { public MessageObserver() { super(mainHandler); }

      public void onChange(boolean hasChanged) {
       // 發送更新UI的消息
       mHandler.sendMessage(mHandler.obtainMessage(0x2));
      }   }
    
  • 4.資源文件注釋

    #FF0000

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