寫出簡潔規範的程式碼對於開發者而言非常重要,它體現了開發者自己的專業性和技術水平,而且能夠贏得別人的讚賞。對團隊來說,團隊成員遵循統一的程式碼規範,能夠更好地維護程式碼庫的穩定和諧。
《Android高階進階讀書筆記》
Android是基於Java語言進行開發的,因此說到編碼規範,首先需要遵循Java的編碼規範。
- 1 Java編碼規範
1.1 原始碼檔案的定義
原始碼檔案以檔案內容中的最頂層的Java類命名,而且大小寫敏感,副檔名為 .java,同時,檔案的編碼格式統一為UTF-8。
1.2 原始碼檔案的結構
一個完整的原始碼檔案由四部分組成
- 版權資訊或者許可證,例如Android RxJava的版權宣告如下:
/**
- Copyright (c) 2016-present, RxJava Contributors.
- - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software distributed under the License is
- distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See
- the License for the specific language governing permissions and limitations under the License.
*/複製程式碼
- Java檔案所在package的宣告
- Java類需要使用到的依賴的引入import語句,一般不建議使用萬用字元,例如
import android.annotation.*
,而應該引入具體的類,例如import android.annotation.SdkConstant;
。同時import語句要按照型別進行分組,不同的組以空行分隔,一般使用的IDE的格式化功能會自動幫我們分好組。 - Java頂級類的定義,有且只有一個,但可以存在內部類定義。每個類中的成員需要按照某種邏輯進行排序,維護者也需要按照相同的邏輯去新增新的成員,而不是僅僅將新的成員放到最後面,同時,多個過載方法應該按順序排放在一起,中間不要插入其他方法。
1.3 遵循的格式
格式主要涉及程式碼的排版問題,需要重點關注的主要包括:
- 多使用花括號:例如if,else,for,do,while等語句要和花括號一起使用,即使只有一條語句或者是空的,也要加上花括號,下面的寫法是錯誤的,而且可能會在後面的程式碼維護中引入bug。
if(isLogin)
login();
else
toLogin();複製程式碼
正確的寫法要加上花括號:
if(isLogin){
login();
}else{
toLogin();
}複製程式碼
- 列字元個數的限制:根據團隊內部使用的顯示器以及IDE具體問題具體分析,最終目的是保證程式碼良好的可閱讀性,一般常見的是約定一行80個或者100個字元,超過的部分IDE自動換行。
- 空白的使用:不要把所有程式碼都寫在一起,需要按照邏輯進行分組,垂直方向的空白原則主要有:a) 方法體內,語句的邏輯分組之間使用空行;b)類裡面連續的成員(欄位、構造方法、普通方法、巢狀內部類、靜態初始化程式碼塊等)之間加上空行。當然,也沒有必要加上多個空行,一行就夠了。
- switch語句:switch語句除了要注意縮排,空白的使用之外,如果連續兩個case之間明確不需要加break語句時,建議加上// fall through註釋,方便程式碼維護者的理解,同時一定要加上default語句,一個符合規範的switch語句如下。
switch (input) {
case 1 :
case 2 :
doOneTwo();
// fall through
case 3 :
doOneTwoThree();
break;
default:
dobigNumber();
}複製程式碼
- 修飾符的順序:類和成員的修飾符如果純在多個的話,需要按照Java語言規範中的定義排序,語句如下:
public protected private abstract static final transient volatile synchronized native strictfp複製程式碼
1.4 命名約定
類的命名遵循大駝峰命名法UpperCamelCase,而方法名和變數名的命名遵循小駝峰命名法lowerCamelCase。常量名使用大寫字母表示,單詞之間以下劃線分隔,例如static final int CONNECTION_TIMEOUT = 10000
。
1.5 Javadoc
標準的Javadoc常見的標記和含義如下:
/**
* Javadoc常見的標記
*
* @param 方法引數的說明
* @return 對方法返回值的說明
* @throws 方法丟擲異常的藐視
* @version 模組的版本號
* @author 模組的作者
* @see 參考方向
* @deprecated 標記是否過時
*/複製程式碼
2 Android 命名規範
2.1 佈局檔案的命名
佈局檔案的命名規則使用“字首_邏輯名”的方式,單詞全部小寫
- Activity的佈局檔案 : activity_xxx;
- Fragment的佈局檔案:fragment_xxx;
- 自定義控制元件的佈局檔案:view_xxx;
- 對話方塊的佈局檔案:dialog_xxx;
- 列表項的佈局檔案:item_xxx;
不過對於龐大專案的開發。近百個activity開頭的layout列表還是會眼瞎。所以那種情況會在前面加上模組名。
2.2 資原始檔的命名
資原始檔的命名規則使用“ 字首模組名邏輯名稱 ”的方式,單詞全部小寫
- 按鈕的命名以btn作為字首,例如 btn_login.png,當按鈕存在多種形態時,需要加上按鈕的形態,例如 btn_login_normal.png,btn_login_pressed.png等
- 圖示的命名以ic作為字首,例如 ic_share.png
- 背景圖片的命名以bg作為字首,例如 bg_main.png
- 分割線的命名以divider作為字首,例如 divider_gray.png
2.3 類的命名
類的命名遵循Java的類命名規範,也就是使用大駝峰命名法,同時需要根據類的具體用途引入Android相關的命名規則,
- Activity類需要以Activity作為字尾,例如MainActivity
- Fragment類需要以Fragment作為字尾,例如HomeFragment
- Service類需要以Service作為字尾,例如DownloadService
- BroadcastReceiver類需要以Receiver作為字尾,例如PushReceiver
- ContentProvider類需要以Provider作為字尾,例如ContactProvider
- 工具類需要以Util作為字尾,例如NetworkUtil
- 自定義的公共基礎類以Base開頭,例如BaseActivity
- 單元測試的類以Test作為字尾,例如HashTest
2.4變數命名
以m開頭。例mAdapter使用時按一個m全都出來了
2.5方法命名
與其寫好名字不如寫好註釋。
3. CheckStyle的使用
CheckStyle是一個針對Java語言的程式碼規範檢查工具,預設情況下,它遵循Google的Java編碼規範和Sun的程式碼規範,同事它又是高度可配置的,不同的團隊可以根據自身的情況對檢查規範進行裁剪或者新增。
安裝完成後重啟Android Studio
然後配置checkstyle.
這裡你也可以使用自帶的Sun 和Google。
歡迎指正錯誤和留言
csdn 地址:blog.csdn.net/sinat_36668…