Android開發中不可忽略的程式碼規範
Android開發中的程式碼規範
最在重構自己的專案的時候,發現自己在以前的開發中命名不是非常規範,給現在的程式碼重構和閱讀造成了一定的影響。因此決定系統的總結一下開發中的命名規範和基本格式。
為什麼要進行程式碼規範
程式碼規範可能是我們很多人都容易忽略的一點,但是作為一個合格的程式猿,我們不僅僅是實現此功能就OK,還要確保系統的可維護性和可讀性。下面我將從兩方面來介紹我們在開發中應該要注意的問題,包括Java開發編碼規範和Android命名規範。
-
格式規範
- 註釋
- 程式碼格式
-
編碼規範
- 命名規範
-
Android資原始檔命名規範
- 佈局檔案
- 圖片
- 屬性
- 動畫
程式碼格式
程式碼縮排
程式碼縮排可以增強程式碼的可閱讀性,程式碼縮排一般為4個空格。在Android Studio 上選中使用Tab鍵就可以實現。使用程式碼縮排可以增加我們的程式碼層次感。示例如下:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
可以看出來,我們在每一層巢狀下的程式碼縮排都為4個字元,這樣閱讀起來就很簡單了。
長句分割
如果句子過長需要換行,或者我們在使用RxJava等框架的鏈式呼叫的時候,建議使用以下規範。
- 第二行相對第一行縮排 4 個空格,從第三行開始,不再繼續縮排,參考示例。
- 運算子與下文一起換行。
- 方法呼叫的點符號與下文一起換行。
- 方法呼叫時,多個引數,需要換行時,在逗號後進行。
- 在括號前不要換行,見反例。
client.newCall(new Request.Builder() .url(address) .build()) .enqueue(new Callback() { @Override ublic void onFailure(Call call, IOException e) { }
反例
client.newCall(new Request.Builder() .url(address) .build()) .enqueue // 括號前不要換行,方法檢視不方便 (new Callback() { @Override ublic void onFailure(Call call, IOException e) { }
變數宣告一句一行
建議在宣告變數的時候一句一行,不要為了省變數型別少寫,會給閱讀帶來很大麻煩。
int a = 0; // 不建議這麼寫 int a = 0, b = 2;
大括號 { } 的使用規定
- 大括號內為空,則簡潔地寫成 { } 即可,不需要換行
- 大括號不為空 ,左大括號前不換行;左大括號後換行;右大括號換行;右大括號後還有 else 等程式碼則右大括號加else一起換行 ; 表示終止的右大括號後必須換行。示例如下:
// 大括號為空,寫成{}不用換行 if (flag) {} // 大括號不為空,左括號後換行 if (flag) { System.out.println("大括號不為空,左括號後換行"); // 右大括號換行,右大括號後有 else,一起換行 } else { System.out.println("右大括號換行,右大括號後有 else,一起換行"); // 終止大括號換行 }
空行分割
不同邏輯、不同語義、不同業務的程式碼之間插入一個空行分隔開來以提升可讀性。但是我們沒有必要加多個空行多此一舉。
private ScrollView scrollView; private TextView textView1; @Override protected void onCreate(Bundle savedInstanceState) {}
變數和方法之間新增空行方便閱讀,區分邏輯。
小括號()的使用規範
小括號使用的地方太多,函式傳參,保留字配合括號的使用等等。
- if / for / while / switch / do 等保留字與括號之間都必須加空格
if (flag) switch (str)
- 左右括號與字元之間不用加空格
if (a == b) // 不建議這麼寫 if( a == b )
- 方法()裡面的引數建議逗號隔開,方法名與括號之間不用加空格
// 引數後面加空格 test("a", "b", "c"); // 不加空格是這樣的,明顯沒有第一個閱讀方便 test("a","b","c");
運算子使用規則
一目運算子左右兩邊不加空格,任何二目、三目運算子的左右兩邊都需要加一個空格
a = a + b; a += b;
一目運算子
// ++ 不用加空格 a++; !a; ~a;
三目運算子使用上述規則
a = a > b ? a :b; b = (a == 10) ? 20 : 30;
其它
- 在java語言規範中,分號代表一個語句的結束。; 分號不用加空格。
- 逗號 ,也不需要加空格,建議逗號後面加空格增強可讀性。
- 點. 同樣不需要加空格。示例如下
for (int i = 1, j = i + 10; i < 5; i++, j = i * 2) { System.out.println("i=" + i + "j=" + j); }
註釋
類註釋 寫明類基本的功能和建立者和時間,其它的功能描述和邏輯可適當新增
/** * 登入註冊資料Model * Created by rookie on 2017/3/5. */
行註釋
根據需要適當說明Android Studio可以設定快捷鍵自動生成。
行註釋
註釋的雙斜線與註釋內容之間有且僅有一個空格。註釋與描述的描述的內容同樣的程式碼縮排。
// 雙斜線之後有一個空格,程式碼縮放一致 String ygb = new String();
命名規範
- 變數,方法小駝峰寫法,不能用拼音
sortByName(); int pageSize;
- 類名首字母大學。大駝峰寫法
HttpUtil MainActivity
- 包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞,包名統一使用單數形式
com.example.rookie.myapplication
- 常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長
MAX_STOCK_COUNT; GET_NAME_URL;
-
單詞縮寫要規範,避免望文不知義,詳見下面的文章
ofollow,noindex">單詞縮寫規範
Android 佈局檔案格式規範
layout檔案下的佈局檔案命名,單詞小寫並用下劃線分開
avtivity_main.xml avtivity_user.xml
layout佈局控制元件名稱名,單詞小寫並用下劃線分開
btn_user_login
drawable 、mipmap等檔案命名格式可參考Android Studio自動生成的檔案。
程式碼規範和命名規範是我們程式設計中的一個重要環節,希望各位同學以後引起重視,提高自己的編碼質量和可閱讀性。