Android 代碼規範 - 命名規範

編碼規範對於程序員尤其重要,能夠有效的幫助咱們進行code review,提升代碼的可讀性,讓其餘人更快的理解代碼。
一個軟件的生命週期中,80%的花費都在於維護以及新功能的迭代,不少的時候都須要閱讀代碼,讀本身之前寫的代碼,讀別人寫的代碼,這樣規範代碼的優點就顯示出來了,符合規範的代碼可讓人簡單快速的理解理解代碼的意圖。
代碼規範先從命名規範開始,Android的命名規範主要涉及:html

  • Java源代碼
  • xml文件
  • 圖片等資源文件

先從Java源代碼開始提及,要說Java源代碼不得不先說下包名的命名規範。java

包名

Android包名的命名規則,Andorid的包名通常採用域名的反轉,單詞全小寫。
好比域名爲www.example.com的包名爲com.example,省略www
包名開始是一個頂級域名,好比com,cn,org等,包名使用.作爲分隔符。第二位通常是二級域名,也能夠根據不一樣機構各自的命名。
後面的命名能夠用部門,項目等進行區分(也能夠沒有),例如:android

com.example.projectgit

在項目內能夠根據功能不一樣,按照模塊劃分不一樣的包名,com.example.project.user表示用戶模塊。
也能夠根據層級的不一樣而劃分不一樣的包名,好比:com.example.prokect.activity,就是Acitivity相關的包。
固然也能夠在不一樣層級裏面再按照模塊劃分包名,好比:com.example.project.activity.user,表示和用戶有關的Activity。程序員


總結,包名通常是以反轉域名開始,後面跟有項目名稱(縮寫,也能夠沒有)。
後面能夠採用的區分包名方式:github

  • 按照模塊 com.example.project.user
  • 按照層級區分 com.example.project.activity
  • 層級下也能夠在區分模塊 com.example.project.activity.user

類和接口

類名是一個或多個單詞組成,採用大駝峯命名,儘可能要使類名簡潔且利於描述,例如:SignInActivity,類名規則以下:數組

  • 大駝峯命名
  • 簡潔而富有表達性
  • 儘可能不使用縮寫(普遍使用的單詞除外,好比URL,XML...)
  • 多單詞中採用 名詞+動詞的方式命名: LocationManage
  • 對於縮寫單詞要所有大寫好比:XMLManage

一個類若是繼承了Android的組件,需在使用該組件的名稱做爲後綴,這樣容易區分該類的做用,好比:SgnInActivity,UserInfoFragment,FileUploadService...
接口通常使用I開頭,採用大駝峯命名規則,好比:IPullToRefreshapp

變量

Android變量分爲三種:成員變量,靜態變量和常量。ide

  • 成員變量

成員變量通常採用小駝峯命名規則,第一單詞的首字母小寫,其後的首字母大寫。變量名通常不使用_$開頭。例如:佈局

private Intent cropIntent;

變量名應簡短且易於描述,選用規則儘可能簡單,易於記憶和聯想。
儘可能避免單個字符的變量名,除非是用於一次性的臨時變量,臨時的整形變量通常命名爲 i,j,k,m,n。字符型的變量通常使用c,d,e
對於View變量的命名規則,若是View是一個單詞的,採用第一個單詞小寫的方式+對應View的描述進行,例如:

private View viewUserInfo;

若是是兩個單詞組成的View,好比:TextView,通常採用縮寫的方式,例如:

private TextView tvUserName;

通常狀況下Button縮寫爲:btn

  • 靜態變量

爲了能夠很方便的區分靜態變量,靜態變量的命名通常採用小寫的s開頭,後面單詞的命名規則和成員變量保持一致,例如:

private static Map sCacheStrings;

  • 常量

常量命名規則通常是全部的單詞都是大寫,中間使用_(下劃線)分割,例如:

private static final float SCALE_RATE = 1.25f;

代碼中不容許出現單獨的字符串或數字常量,好比xx.equals("1"),單獨的字符串或數字不利於理解和後期的維護。若是須要使用數據或字符,請按照他們的含義封裝成靜態常量,或者使用枚舉,for語句除外。

方法

方法命名規則採用小駝峯命名法例如:onCreate(),onRun(),方法名通常採用動詞或者動名詞。
通常使用的方法名前綴。

  • getXX()返回某個值的方法
  • initXX() 初始化相關方法,好比初始化佈局:initView()
  • checkXX()和isXX() 方法爲boolean值的時候使用is或者check爲前綴
  • saveXX() 保存數據
  • clearXX()和removeXX() 清除數據
  • updateXX() 更新數據
  • processXX() 對數據進行處理
  • dispalyXX() 顯示某某信息
  • drawXX() 繪製數據或者效果

另外對於方法的其餘一些規範:

  • 方法的參數儘量不超過4個,須要更多的參數的時候能夠是使用類的做爲方法的參數
  • 方法參數中儘可能少使用boolean,使用boolean傳參不利於代碼的閱讀
  • 方法儘可能不超過15行,方法過長,說明當前方法業務邏輯過於複雜,須要進行方法拆分
  • 一個方法只作一件事,
  • 若是一個方法返回的是一個錯誤碼,可使用異常
  • 不使用try catch 處理業務邏輯
  • 儘量不實用null,替代爲異常或者使用空的變量,好比Collections.emptyList()

Layout

Layout的命名規則須要和使用他們的組件對應,方便查找和維護,好比咱們在建立一個用戶信息的UserInfoActivity,對應的Layout的命名就應該是activity_user_info.xml
對應Andorid組件的Layout命名規則:

  • Activity -> activity_user_info.xml
  • Fragment -> fragment_sign_up.xml
  • Dialog -> dialog_change_password.xml
  • AdapterView Item -> item_user.xml
  • Layout文件只是佈局文件的一部分 -> partial_stats_bar.xml

string和color

項目中使用的string和color的值原則上都是必須放在strings.xmlcolors.xml中,不要放在Java代碼中,這樣的好處是可複用,提升維護性,減小非必要的代碼。
xml的資源命名,字母所有小寫,多個單詞之間使用_(下劃線)分割.
好比:

example

建議color的命名中體現其ARGB值,好比:

#feb749
這樣的寫法對於代碼提示更加的友好,有利於對照標註圖查找顏色值。

##id命名
layout中使用的id的單詞要所有小寫,單詞之間使用下劃線分割,使用名詞或者名詞詞組,應該經過id的命名能夠直接理解當前的View要實現的功能.
例如:

@+id/tv_user_name_show

id命名的第一個單詞使用View的縮寫,若是View只是一個單詞,縮寫就是當前單詞。通常Button的縮寫爲:btn

Drawable命名

Drawable的命名規則根據使用的控件來命名,控件的縮寫在前面,後面使用表示其功能的一個或者多個單詞,中間使用使用_下劃線分割。好比:

  • Action bar使用ab_,好比:ab_stacked.png
  • Button 使用btn_
  • Dialgo 使用dialog_
  • Divide 使用 divider_
  • Icon 使用 ic_
  • Menu 使用menu_
  • Notification使用 notification_
  • Tabs 使用tab_

Drawable是有多個狀態的,在命名中體現出狀態的不一樣,好比:

  • Normal 對應_normal結尾,好比btn_order_normal.9.png
  • Pressed 對應_pressed結尾
  • Focused 對應_focused結尾
  • Disabled 對應_disabled結尾
  • Selected 對應_selected結尾

其餘資源文件的命名須要遵照Android的規範便可,好比arrays.xml數組文件,dimens.xml分辨的配置,style.xml樣式的配置,資源文件的ID命名規則都是字母小寫,使用下劃線分割的原則。

參考:
github.com/ribot/andro…
source.android.com/source/code…
google.github.io/styleguide/…

相關文章
相關標籤/搜索