Android開發有哪些規範?
統一用UTF-8. Android Studio默認已是UTF-8,只要不去改動它就可以了。
-
縮進
統一為4個空格,將Tab size設置為4則可以保證tab鍵按4個空格縮進。另外,不要勾選上Use tab character,可以保證切換到不同tab長度的環境時還能繼續保持統一的4個空格的縮進樣式。 - 花括號
public void method()
{
// Bad
}
public void method() {
// Good
}
- 空格的使用
if、else、for、switch、while等邏輯關鍵字與後面的語句留一個空格隔開。
// Good
if (booleanVariable) {
} 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); // Bad,沒有用一個空格隔開
- 空行的使用
將邏輯相關的代碼段用空行隔開,以提高可讀性。空行也只空一行,不要空多行。在以下情況需用一個空行:
- 兩個方法之間
- 方法內的兩個邏輯段之間
- 方法內的局部變量和方法的第一條邏輯語句之間
- 常量和變量之間
- 長行
當一個表達式無法容納在一行內時,可換行顯示,另起的新行用8個空格縮進。
someMethod(longExpression1, longExpression2, longExpression3,
- 一行聲明一個變量
一行聲明一個變量,不要一行聲明多個變量,這樣有利於寫註釋。
private String param1; // 參數1
private String param2; // 參數2
-
行寬設置為100,設置格式化時自動斷行到行寬位置。
- 使用快捷鍵進行代碼自動格式化。
Windows:CTRL+ALT+L
Mac:OPTION+COMMAND+L
-
一個方法最多不要超過40行代碼。
- 引用第三方庫要慎重
避免應用大容量的第三方庫,導致客戶端包非常大。
- 文字大小的單位
統一用sp,元素大小的單位統一用dp。
- 應用中的字符串
統一在strings.xml中定義,然後在代碼和布局文件中引用。
- 顏色值
統一在colors.xml中定義,然後在代碼和布局文件中引用。另外,不要在代碼和布局文件中引用系統的顏色,除了透明。
- JSON解析
Android中調用服務器端的接口一般返回的是JSON數據,在解析JSON的時候,無論是使用原始的手工解析方式,還是使用javabean的解析方式,解析出來的結果在使用的時候必須都進行判空處理。不允許因為服務端的json出問題,導致app在解析json的時候出現崩潰。
- 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;
使用這些符號常量值代替字面值的好處是,符號常量值是由大寫的英文單詞組成,是有意義的,可以幫助程序員更好的理解函數返回值的意義,而且符號常量值對應的具體的賦值在後期也是很方便修改的
- 封裝 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
-
Activity點擊事件
activity中在一個View.OnClickListener中處理所有的邏輯。 - 數據一定要效驗
例如字符型轉數字型,如果轉換失敗一定要有缺省值;
服務端響應數據是否有效判斷;
Android開發有哪些規範?