日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 宝典:代码规范与命名规范

發布時間:2023/12/16 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 宝典:代码规范与命名规范 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

博主聲明:

轉載請在開頭附加本文鏈接及作者信息,并標記為轉載。本文由博主?威威喵?原創,請多支持與指教。

本文首發于此? ?博主:威威喵??|??博客主頁:https://blog.csdn.net/smile_running

  • 書寫規范

1. 編碼方式統一用UTF-8. Android Studio默認已是UTF-8,只要不去改動它就可以了。

2. 縮進統一為4個空格,將Tab size設置為4則可以保證tab鍵按4個空格縮進。另外,不要勾選上Use tab character,可以保證切換到不同tab長度的環境時還能繼續保持統一的4個空格的縮進樣式。

3. 花括號不要單獨一行,和它前面的代碼同一行。而且,花括號與前面的代碼之間用一個空格隔開。空方法允許花括號和方法名占同一行

4. 空格的使用

if、else、for、switch、while等邏輯關鍵字與后面的語句留一個空格隔開。

// Good if (booleanVariable) {// TODO while booleanVariable is true } else {// TODO else }// Bad if(booleanVariable) {// TODO while booleanVariable is true }else {// TODO else }

運算符兩邊各用一個空格隔開。

方法的每個參數之間用一個空格隔開。

public void method(String param1, String param2); // Good,param1后面的逗號與String之間隔了一個空格 method(param1, param2); // Good,方法調用時,param1后面的逗號與param2之間隔了一個空格 method(param1,param2); // Bad,沒有用一個空格隔開

5. 空行的使用

將邏輯相關的代碼段用空行隔開,以提高可讀性。空行也只空一行,不要空多行。在以下情況需用一個空行:

  • 兩個方法之間
  • 方法內的兩個邏輯段之間
  • 方法內的局部變量和方法的第一條邏輯語句之間
  • 常量和變量之間

6. 當一個表達式無法容納在一行內時,可換行顯示,另起的新行用8個空格縮進。

7. 一行聲明一個變量,不要一行聲明多個變量,這樣有利于寫注釋。

private String param1; // 參數1 private String param2; // 參數2

8. 行寬設置為100,設置格式化時自動斷行到行寬位置。

9. 使用快捷鍵進行代碼自動格式化。

Windows:CTRL+ALT+L?

Mac:OPTION+COMMAND+L

10. 一個方法最多不要超過40行代碼。

11. 范圍型的常量用枚舉類定義,而不要直接用整型或字符,這樣可以減少范圍值的有效性檢查。

// 用枚舉類定義,Good public enum CouponType {// 現金券@SerializedName("1")CASH,// 抵用券@SerializedName("2")DEBIT,// 折扣券@SerializedName("3")DISCOUNT }// 用整型定義,Bad public static final int TYPE_CASH = 1; // 現金券 public static final int TYPE_DEBIT = 2; // 抵扣券 public static final int TYPE_DISCOUNT = 3; // 折扣券

12. 文字大小的單位統一用sp,元素大小的單位統一用dp。

13. 應用中的字符串統一在strings.xml中定義,然后在代碼和布局文件中引用。

14. 顏色值統一在colors.xml中定義,然后在代碼和布局文件中引用。另外,不要在代碼和布局文件中引用系統的顏色,除了透明。

  • 命名規范

1. 包命名

域名反寫+項目名稱+模塊名稱,全部單詞用小寫字母。例如,機器人項目的Model模塊包名如下:

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

imgbtn

ImageView

imgv

ListView

listv

RadioGroup

rgroup

RadioButton

rbtn

ProgressBar

proBar

SeekBar

skBar

CheckBox

chk

Spinner

spn

TableLayout

table

TableRow

row

LinearLayout

llayout

RelativeLayout

rlayout

ScrollView

scroll

SearchView

search

TabHost

host

TabWidget

widget

ZoomControl

zmCtl

VideoView

vdoVi

AutoCompleteTextView

autoTxt

WebView

webv

TimePicker

tmPk

toggleButton

tglBtn

toggleButton

tglBtn

GridView

gv

RecyclerView

recyv

?

?

5. 常量命名

全部為大寫單詞,單詞之間用下劃線分開。

6. 變量命名

{范圍描述+}意義描述+類型描述的組合,用駝峰式,首字母小寫。

1.私有成員變量加前綴 m

2.臨時變量加前綴 _

3.參數前綴加 ?p (不強制要求)

7. 控件id命名

控件縮寫_{范圍_}意義,范圍可選,只在有明確定義的范圍內才需要加上。

<!-- 這是標題欄的標題 --> <TextViewandroid:id="@+id/txt_header_title"... /><!-- 這是登錄按鈕 --> <Buttonandroid:id="@+id/btn_login"... />

8. layout命名

組件類型_{范圍_}功能,范圍可選,只在有明確定義的范圍內才需要加上。以下為幾種常用的組件類型命名:

  • activity_{范圍_}功能,為Activity的命名格式
  • fragment_{范圍_}功能,為Fragment的命名格式
  • dialog_{范圍_}功能,為Dialog的命名格式
  • item_list_{范圍_}功能,為ListView的item命名格式
  • item_recy_{范圍_}功能,為RecyclerView的item命名格式
  • item_grid_{范圍_}功能,為GridView的item命名格式
  • header_list_{范圍_}功能,為ListView的HeaderView命名格式
  • footer_list_{范圍_}功能,為ListView的FooterView命名格式

9. strings和 dimens的命名

非共有類型:{模塊描述}_{視圖類型}_{業務描述}_{后綴}

共有功能類型:{業務功能}_{視圖類型}_{業務描述}_{后綴}

后綴:_normal,_pressed,_selected,_selector,_disable……

表示登錄頁面中的密碼輸入框的提示文本<string name="login_et_password_hint">請輸入密碼</string>表示登錄頁面中的密碼輸入框的默認顯示密碼為123456,<string name="login_et_password_text">123456</string>訂單列表中的確認收貨按鈕的文本<string name="order_list_item_btn_confirmreceipt">確認收貨</string>訂單列表中的確認收貨按鈕被按下時候的文本<string name="order_list_item_btn_confirmreceipt_pressed">確認收貨</string>

order 表示視圖功能描述,list_item_btn 是視圖類型,confirmreceipt 是業務描述

  • 頁面標題,命名格式為:home_activity_title???
  • 按鈕文字,命名格式為:?login_btn_txt
  • 標簽文字,命名格式為:order_lable_goods_price
  • 選項卡文字,命名格式為:home_tab_mine
  • 消息框文字,命名格式為:home_toast_retry_connect
  • 編輯框的提示文字,命名格式為:login_et_hint
  • 對話框的文字,命名格式為:softupdate_dialog_title
  • menu的item文字,命名格式為:home_menu

10. colors的命名

非共有類型:{前綴}_{模塊描述}_{視圖類型}_{業務描述}_{后綴}

共有功能類型:{業務功能}_{視圖類型}_{業務描述}_{后綴}

前綴{_控件}{_范圍}{_后綴},控件、范圍、后綴可選,但控件和范圍至少要有一個。

<!--主頁的home子頁面的標題欄背景顏色--><color name="main_home_titlebar">@color/red</color><color name="main_home_titlebar_bg">@color/red</color><!--主頁的發現子頁面的確認按鈕的背景顏色--><color name="main_find_btn_confirm">@color/red</color><!--主頁的發現子頁面的確認按鈕的文本顏色--><color name="main_find_btn_confirm_text">@color/blue</color><!--主頁的發現子頁面的確認按鈕被按下的時候的背景顏色--><color name="main_find_btn_confirm_bg_pressed">@color/red</color><!--主頁的發現子頁面的確認按鈕被按下的時候的文本顏色--><color name="main_find_btn_confirm_text_pressed">@color/blue</color>
  • 區分狀態時,默認狀態的顏色,添加normal后綴
  • 區分狀態時,按下時的顏色,添加pressed后綴
  • 區分狀態時,選中時的顏色,添加selected后綴
  • 區分狀態時,不可用時的顏色,添加disable后綴

11. drawable的命名

前綴{_控件}{_范圍}{_后綴},控件、范圍、后綴可選,但控件和范圍至少要有一個。

  • 圖標類,添加ic前綴
  • 背景類,添加bg前綴
  • 分隔類,添加div前綴
  • 默認類,添加def前綴
  • 區分狀態時,默認狀態,添加normal后綴
  • 區分狀態時,按下時的狀態,添加pressed后綴
  • 區分狀態時,選中時的狀態,添加selected后綴
  • 區分狀態時,不可用時的狀態,添加disable后綴
  • 多種狀態的,添加selector后綴(一般為ListView的selector或按鈕的selector)

名稱

功能

例子

btn_xx

按鈕圖片使用btn_整體效果(selector)

btn_login

btn_xx_normal

按鈕圖片使用btn_正常情況效果

btn_login_normal

btn_xx_pressed

按鈕圖片使用btn_點擊時候效果

btn_login_pressed

btn_xx_focused

state_focused聚焦效果

et_username_focused

btn_xx_disabled

state_enabled?(false)不可用效果

btn_login_disabled

btn_xx_checked

state_checked選中效果

btn_ hobby_checked

btn_xx_selected

state_selected選中效果

btn_hobby_selected

btn_xx_hovered

state_hovered懸停效果

btn_login_hovered

btn_xx_checkable

state_checkable可選效果

btn_ hobby_checkable

btn_xx_activated

state_activated激活的

btn_login.activated

btn_xx_windowfocused

state_window_focused

et_pasword_windowfocused

bg_xx

背景圖片使用bg_功能_說明

bg_home

12. 動畫文件命名

動畫類型_動畫方向。

模塊名_邏輯名稱

邏輯名稱

refresh_progress.xml

market_cart_add.xml

market_cart_remove.xml

普通的tween動畫采用如下表格中的命名方式

  • fade_in,淡入
  • fade_out,淡出
  • push_down_in,從下方推入
  • push_down_out,從下方推出
  • slide_in_from_top,從頭部滑動進入
  • zoom_enter,變形進入
  • shrink_to_middle,中間縮小

?

  • 注釋規范

1. 文件頭注釋

文件頂部統一添加版權聲明,聲明的格式如下:

2. 類和接口注釋

類和接口統一添加javadoc注釋,格式如下:

/*** 類或接口的描述信息** @author ${USER}* @date ${DATE}*/

3. 方法注釋

下面幾種方法,都必須添加javadoc注釋,說明該方法的用途和參數說明,以及返回值的說明。

  • 接口中定義的所有方法
  • 抽象類中自定義的抽象方法
  • 抽象父類的自定義公用方法
  • 工具類的公用方法
/*** 登錄** @param loginName 登錄名* @param password 密碼* @param listener 回調監聽器*/ public void login(String loginName, String password, ActionCallbacListener<Void> listener);

4. 變量和常量注釋

下面幾種情況下的常量和變量,都要添加注釋說明,優先采用右側//來注釋,若注釋說明太長則在上方添加注釋。

  • 接口中定義的所有常量
  • 公有類的公有常量
  • 枚舉類定義的所有枚舉常量
  • 實體類的所有屬性變量
public static final int TYPE_CASH = 1; // 現金券 public static final int TYPE_DEBIT = 2; // 抵扣券 public static final int TYPE_DISCOUNT = 3; // 折扣券private int id; // 券id private String name; // 券名稱 private String introduce; // 券簡介
  • 常見縮寫表

名稱

縮寫

名稱

縮寫

icon

ic (主要用在app的圖標)

document

doc

color

cl(主要用于顏色值)

error

err

divider

di(主要用于分隔線,不僅包括Listview中的divider,還包括普通布局中的線)

escape

esc

selector

sl(主要用于某一view多種狀態,不僅包括Listview中的selector,還包括按鈕的selector)

increment

inc

average

avg

infomation

info

background

bg(主要用于布局和子布局的背景)

initial

init

buffer

buf

image

img

control

ctrl

Internationalization

I18N

delete

del

length

len

總結

以上是生活随笔為你收集整理的Android 宝典:代码规范与命名规范的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。