Android開發中不可忽略的代碼規範

Android開發中的代碼規範

最在重構自己的項目的時候,發現自己在以前的開發中命名不是非常規範,給現在的代碼重構和閱讀造成了一定的影響。因此決定系統的總結一下開發中的命名規範和基本格式。

爲什麼要進行代碼規範

代碼規範可能是我們很多人都容易忽略的一點,但是作爲一個合格的程序猿,我們不僅僅是實現此功能就OK,還要確保系統的可維護性和可讀性。下面我將從兩方面來介紹我們在開發中應該要注意的問題,包括Java開發編碼規範和Android命名規範。

  • 格式規範
    1. 註釋
    2. 代碼格式
  • 編碼規範
    1. 命名規範
  • Android資源文件命名規範
    1. 佈局文件
    2. 圖片
    3. 屬性
    4. 動畫

代碼格式

代碼縮進

代碼縮進可以增強代碼的可閱讀性,代碼縮進一般爲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;
  • 單詞縮寫要規範,避免望文不知義,詳見下面的文章
    單詞縮寫規範

Android 佈局文件格式規範

layout文件下的佈局文件命名,單詞小寫並用下劃線分開

avtivity_main.xml
avtivity_user.xml

layout佈局控件名稱名,單詞小寫並用下劃線分開

btn_user_login

drawable 、mipmap等文件命名格式可參考Android Studio自動生成的文件。

代碼規範和命名規範是我們編程中的一個重要環節,希望各位小夥伴以後引起重視,提高自己的編碼質量和可閱讀性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章