1. 程式人生 > >Android開發有哪些規範?

Android開發有哪些規範?

必須 格式化 window json數據 當前 好處 res 做成 java

  • 編碼方式
  • 統一用UTF-8. Android Studio默認已是UTF-8,只要不去改動它就可以了。

    1. 縮進
      統一為4個空格,將Tab size設置為4則可以保證tab鍵按4個空格縮進。另外,不要勾選上Use tab character,可以保證切換到不同tab長度的環境時還能繼續保持統一的4個空格的縮進樣式。

    2. 花括號

    public void method()
    {
    // Bad
    }
    public void method() {
    // Good
    }

    1. 空格的使用

    if、else、for、switch、while等邏輯關鍵字與後面的語句留一個空格隔開。

    // Good
    if (booleanVariable) {

    // TODO while booleanVariable is true
    } else {
    // TODO else
    }
    // Bad
    if(booleanVariable) {
    // TODO while booleanVariable is true
    }else {
    // TODO else

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

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

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

    public void method(String param1, String param2); // Good,param1後面的逗號與String之間隔了一個空格

    method(param1, param2); // Good,方法調用時,param1後面的逗號與param2之間隔了一個空格
    method(param1,param2); // Bad,沒有用一個空格隔開

    1. 空行的使用

    將邏輯相關的代碼段用空行隔開,以提高可讀性。空行也只空一行,不要空多行。在以下情況需用一個空行:

    • 兩個方法之間
    • 方法內的兩個邏輯段之間
    • 方法內的局部變量和方法的第一條邏輯語句之間
    • 常量和變量之間
    1. 長行

    當一個表達式無法容納在一行內時,可換行顯示,另起的新行用8個空格縮進。

    someMethod(longExpression1, longExpression2, longExpression3,

    longExpression4, longExpression5);

    1. 一行聲明一個變量
      一行聲明一個變量,不要一行聲明多個變量,這樣有利於寫註釋。

    private String param1; // 參數1
    private String param2; // 參數2

    1. 行寬設置為100,設置格式化時自動斷行到行寬位置。

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

    Windows:CTRL+ALT+L
    Mac:OPTION+COMMAND+L

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

    2. 引用第三方庫要慎重

    避免應用大容量的第三方庫,導致客戶端包非常大。

    1. 文字大小的單位

    統一用sp,元素大小的單位統一用dp。

    1. 應用中的字符串

    統一在strings.xml中定義,然後在代碼和布局文件中引用。

    1. 顏色值

    統一在colors.xml中定義,然後在代碼和布局文件中引用。另外,不要在代碼和布局文件中引用系統的顏色,除了透明。

    1. JSON解析

    Android中調用服務器端的接口一般返回的是JSON數據,在解析JSON的時候,無論是使用原始的手工解析方式,還是使用javabean的解析方式,解析出來的結果在使用的時候必須都進行判空處理。不允許因為服務端的json出問題,導致app在解析json的時候出現崩潰。

    1. Int類型常量

    函數返回的時候,如果返回的int類型的數據並不是真實的實用的數據值(例如表示寬度、高度、大小等值),僅僅代表函數執行成功、失敗、異常的狀態值,並且這些值是有限的幾個值,必須要將這些值使用靜態常量描述,或者使用枚舉類型,例如:

    int GetJsonString()

    該函數返回-1表示獲取解析JSON數據異常,返回0表示成功,返回1表示網絡連接異常,返回2表示JSON內容中的數據部分為空。那麽在函數內部的代碼裏不要直接使用這些字面值,這些字面值對於程序員來說是毫無意義的,代碼可閱讀性很差,建議做成下面的模式:

    public static final int RESULT_PARSE_JSON_EXCEPTION = -1;
    public static final int RESULT_SUCCESS = 0;
    public static final int RESULT_NETWORK_EXCEPTION = 1;
    public static final int RESULT_NO_DATA = 2;

    使用這些符號常量值代替字面值的好處是,符號常量值是由大寫的英文單詞組成,是有意義的,可以幫助程序員更好的理解函數返回值的意義,而且符號常量值對應的具體的賦值在後期也是很方便修改的

    1. 封裝 Log 功能

    Log功能應該封裝成為自動將當前所在類的類名變成log輸出的TAG參數,發布的app最好是能循環寫日誌文件到系統存儲中,並且日誌文件應該使用反復覆蓋的方式重復利用。下面僅僅是一個不完善的例子:

    public class MyLog {
    public static final String TAG = "myapp ";
    public static void v(Object o, String message) {
    Log.v(TAG + o.getClass().getSimpleName(), message);
    }
    }

    使用方法:

    Log.v(TAG + o.getClass().getSimpleName(), message);

    打印結果

    V/myapp MainActivity: Hello

    1. Activity點擊事件
      activity中在一個View.OnClickListener中處理所有的邏輯。

    2. 數據一定要效驗
      例如字符型轉數字型,如果轉換失敗一定要有缺省值;
      服務端響應數據是否有效判斷;

    Android開發有哪些規範?