摘要:良好的開發規範,可以提升代碼的可讀性,與代碼品質。良好的開發規範也可以有效提升團隊的開發效率,便于團隊間的溝通。在進入程式員這個行業前,也看過很多人的代碼,最讨厭的就是那些沒有注釋的代碼,要花特别多的時間進行了解。是以遵循一個良好的開發規範,是提升程式員素養的一個重要方式。
主要針對Android開發規範進行介紹,其他也是異曲同工,有遺漏的地方請指出,互相學習。
本文參考:http://keeganlee.me/post/android/20150709
代碼書寫規範
- 統一編碼,使用UTF-8進行編碼,避免中文字元的亂碼現象。
- 統一縮進,java語言程式設計時,換行基本是使用TAB進行縮進的,統一4個字元縮進,提高代碼整潔度。
- 統一花括号,使用ctrl+shift+f(Windows)/Option+command+F(mac)快捷鍵進行代碼格式化,即用預設的代碼格式,如果需要團隊開發的代碼格式化模闆,通過IDE進行導入。
- 空格的使用:邏輯關鍵字與後面的語句留一個空格隔開。
- 空行的使用:兩個方法之間,方法内的兩個邏輯段之間,方法内的局部變量和方法的第一條邏輯語句之間,常量和變量之間。
- 行寬設定,換行使用8字元縮進。
- 單變量聲明,友善注釋。
- 方法行數限定,能少盡量少。
- 文字統一使用SP機關,統一使用DP機關。
- 資源統一在資源檔案中定義,在布局或代碼中引用。
命名規範
- 包名:域名反轉
- 類命名:使用駝峰命名法,用名詞或名詞詞組命名,每個單詞的首字母大寫。
- activity類,命名以Activity為字尾,如:LoginActivity
- fragment類,命名以Fragment為字尾,如:ShareDialogFragment
- service類,命名以Service為字尾,如:DownloadService
- adapter類,命名以Adapter為字尾,如:CouponListAdapter
- 工具類,命名以Util為字尾,如:EncryptUtil
- 模型類,命名以BO為字尾,如:CouponBO
- 接口實作類,命名以Impl為字尾,如:ApiImpl
- 方法命名:使用駝峰命名規則,用動詞命名,第一個單詞的首字母小寫,其他單詞的首字母大寫。
- 初始化方法,命名以init開頭,例:initView
- 按鈕點選方法,命名以to開頭,例:toLogin
- 設定方法,命名以set開頭,例:setData
- 具有傳回值的擷取方法,命名以get開頭,例:getData
- 通過異步加載資料的方法,命名以load開頭,例:loadData
- 布爾型的判斷方法,命名以is或has,或具有邏輯意義的單詞如equals,例:isEmpty
- 控件縮寫
控件 | 縮寫 | 控件 | 縮寫 |
---|---|---|---|
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,中間縮小
注釋規範
- 檔案注釋:包括檔案作者,日期,檔案功能描述
- 類和接口注釋:類和接口統一添加javadoc注釋,簡單面試功能及作者
- 方法注釋:說明該方法的用途和參數說明,以及傳回值的說明。
- 接口中定義的所有方法
- 抽象類中自定義的抽象方法
- 抽象父類的自定義公用方法
- 工具類的公用方法
- 變量和常量注釋:優先采用右側//來注釋,若注釋說明太長則在上方添加注釋。
- 接口中定義的所有常量
- 公有類的公有常量
- 枚舉類定義的所有枚舉常量
- 實體類的所有屬性變量