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;
- 單詞縮寫要規範,避免望文不知義,詳見下面的文章
單詞縮寫規範
Android 佈局文件格式規範
layout文件下的佈局文件命名,單詞小寫並用下劃線分開
avtivity_main.xml
avtivity_user.xml
layout佈局控件名稱名,單詞小寫並用下劃線分開
btn_user_login
drawable 、mipmap等文件命名格式可參考Android Studio自動生成的文件。
代碼規範和命名規範是我們編程中的一個重要環節,希望各位小夥伴以後引起重視,提高自己的編碼質量和可閱讀性。