天天看點

Android 開發規範代碼書寫規範命名規範注釋規範

摘要:良好的開發規範,可以提升代碼的可讀性,與代碼品質。良好的開發規範也可以有效提升團隊的開發效率,便于團隊間的溝通。在進入程式員這個行業前,也看過很多人的代碼,最讨厭的就是那些沒有注釋的代碼,要花特别多的時間進行了解。是以遵循一個良好的開發規範,是提升程式員素養的一個重要方式。

主要針對Android開發規範進行介紹,其他也是異曲同工,有遺漏的地方請指出,互相學習。

本文參考:http://keeganlee.me/post/android/20150709

代碼書寫規範

  1. 統一編碼,使用UTF-8進行編碼,避免中文字元的亂碼現象。
  2. 統一縮進,java語言程式設計時,換行基本是使用TAB進行縮進的,統一4個字元縮進,提高代碼整潔度。
  3. 統一花括号,使用ctrl+shift+f(Windows)/Option+command+F(mac)快捷鍵進行代碼格式化,即用預設的代碼格式,如果需要團隊開發的代碼格式化模闆,通過IDE進行導入。
  4. 空格的使用:邏輯關鍵字與後面的語句留一個空格隔開。
  5. 空行的使用:兩個方法之間,方法内的兩個邏輯段之間,方法内的局部變量和方法的第一條邏輯語句之間,常量和變量之間。
  6. 行寬設定,換行使用8字元縮進。
  7. 單變量聲明,友善注釋。
  8. 方法行數限定,能少盡量少。
  9. 文字統一使用SP機關,統一使用DP機關。
  10. 資源統一在資源檔案中定義,在布局或代碼中引用。

命名規範

  1. 包名:域名反轉
  2. 類命名:使用駝峰命名法,用名詞或名詞詞組命名,每個單詞的首字母大寫。
    • activity類,命名以Activity為字尾,如:LoginActivity
    • fragment類,命名以Fragment為字尾,如:ShareDialogFragment
    • service類,命名以Service為字尾,如:DownloadService
    • adapter類,命名以Adapter為字尾,如:CouponListAdapter
    • 工具類,命名以Util為字尾,如:EncryptUtil
    • 模型類,命名以BO為字尾,如:CouponBO
    • 接口實作類,命名以Impl為字尾,如:ApiImpl
  3. 方法命名:使用駝峰命名規則,用動詞命名,第一個單詞的首字母小寫,其他單詞的首字母大寫。
    • 初始化方法,命名以init開頭,例:initView
    • 按鈕點選方法,命名以to開頭,例:toLogin
    • 設定方法,命名以set開頭,例:setData
    • 具有傳回值的擷取方法,命名以get開頭,例:getData
    • 通過異步加載資料的方法,命名以load開頭,例:loadData
    • 布爾型的判斷方法,命名以is或has,或具有邏輯意義的單詞如equals,例:isEmpty
  4. 控件縮寫
控件 縮寫 控件 縮寫
TextView txt EditText edt
Button btn ImageButton ibtn
RadioGroup group RadioButton rbtn
ProgressBar progress SeekBar seek
TableLayout table TableRow row
ScrollView scroll SearchView search
TabHost host TabWidget widget

5. 常量命名:全部為大寫單詞,單詞之間用下劃線分開。

6. 變量命名:{範圍描述+}意義描述+類型描述的組合,用駝峰命名規則,首字母小寫。

7. 控件id命名:控件縮寫_{範圍_}意義,範圍可選,隻在有明确定義的範圍内才需要加上。

8. layout命名:元件類型{範圍}功能,範圍可選,隻在有明确定義的範圍内才需要加上。

* activity_{範圍_}功能,為Activity的命名格式

* fragment_{範圍_}功能,為Fragment的命名格式

* dialog_{範圍_}功能,為Dialog的命名格式

* item_list_{範圍_}功能,為ListView的item命名格式

* item_grid_{範圍_}功能,為GridView的item命名格式

* header_list_{範圍_}功能,為ListView的HeaderView命名格式

* footer_list_{範圍_}功能,為ListView的FooterView命名格式

9. strings的命名:類型_{範圍_}功能,範圍可選。

* 頁面标題,命名格式為:title_頁面

* 按鈕文字,命名格式為:btn_按鈕事件

* 标簽文字,命名格式為:label_标簽文字

* 頁籤文字,命名格式為:tab_頁籤文字

* 消息框文字,命名格式為:toast_消息

* 編輯框的提示文字,命名格式為:hint_提示資訊

* 圖檔的描述文字,命名格式為:desc_圖檔文字

* 對話框的文字,命名格式為:dialog_文字

* menu的item文字,命名格式為:action_文字

10. colors的命名:字首{_控件}{_範圍}{_字尾},控件、範圍、字尾可選,但控件和範圍至少要有一個。

* 背景顔色,添加bg字首

* 文本顔色,添加text字首

* 分割線顔色,添加div字首

* 區分狀态時,預設狀态的顔色,添加normal字尾

* 區分狀态時,按下時的顔色,添加pressed字尾

* 區分狀态時,選中時的顔色,添加selected字尾

* 區分狀态時,不可用時的顔色,添加disable字尾

11. drawable的命名:字首{_控件}{_範圍}{_字尾},控件、範圍、字尾可選,但控件和範圍至少要有一個。

* 圖示類,添加ic字首

* 背景類,添加bg字首

* 分隔類,添加div字首

* 預設類,添加def字首

* 區分狀态時,預設狀态,添加normal字尾

* 區分狀态時,按下時的狀态,添加pressed字尾

* 區分狀态時,選中時的狀态,添加selected字尾

* 區分狀态時,不可用時的狀态,添加disable字尾

* 多種狀态的,添加selector字尾(一般為ListView的selector或按鈕的selector)

12. 動畫檔案命名:動畫類型_動畫方向。

* fade_in,淡入

* fade_out,淡出

* push_down_in,從下方推入

* push_down_out,從下方推出

* slide_in_from_top,從頭部滑動進入

* zoom_enter,變形進入

* shrink_to_middle,中間縮小

注釋規範

  1. 檔案注釋:包括檔案作者,日期,檔案功能描述
  2. 類和接口注釋:類和接口統一添加javadoc注釋,簡單面試功能及作者
  3. 方法注釋:說明該方法的用途和參數說明,以及傳回值的說明。
    • 接口中定義的所有方法
    • 抽象類中自定義的抽象方法
    • 抽象父類的自定義公用方法
    • 工具類的公用方法
  4. 變量和常量注釋:優先采用右側//來注釋,若注釋說明太長則在上方添加注釋。
    • 接口中定義的所有常量
    • 公有類的公有常量
    • 枚舉類定義的所有枚舉常量
    • 實體類的所有屬性變量