Android程序開發中,使用規範的命名有益於程序的開發和後期閱讀。本文主要對Android程序包名的定義作詳細介紹,並附帶一些簡單的命名規則。java
一.標識符命名方法
1 .小駝峯命名法,除首單詞外,其他全部單詞的第一個字母大寫。如:allPrice,getAllNames
2.大駝峯命名法,全部單詞的第一個字母大寫。如:GuideActivity,StudentInfoBean
3.下劃線命名法:單詞與單詞間用下劃線作間隔。如:activity_main,select_backGround_color
二.命名規範
(一)包(packages)的命名規範:
採用反域名命名規則,所有使用小寫字母。一級包名爲com,二級包名lwz(爲我的或公司名稱,能夠簡寫),三級包名guidecity(根據應用進行命名),四級包名ui或utils等(模塊名或層級名),根據實際狀況也是能夠用五級包名,六級包名。
這裏的四級包名是要重點理解和分類的,例如:com.lwz.應用.utils ,此包中包含:公共工具方法類數據庫
1.utils
此包中包含:公共工具方法類,好比:SPHelperUtil、TimeUitl、FileUtil等網絡
2.adapter
此包中包含:一些適配器的類,好比:ArticleAdapter、FansAdapter,HistorAdaper等框架
3.base
此包中包含:一些共同類的基類,好比:BaseActivity(全部的Activity類都繼承這個類)、BaseFragment(全部的Fragment都繼承這個類),ListItemAdapter(封裝了Base Adapter的基類)等ide
4.bean
此包中包含:一些屬性對象類,好比:StudentBean、LonginBean、ArticleBean等工具
5.config
此包中包含:最頂級的配置類,好比:MyApp(繼承了Application)佈局
6.httpservice
此包中包含:Http數據的請求接口類,好像Retrofit網絡框架請求網絡數據纔要使用。如:ILogin接口,IAddTopic接口,IUpdate等post
7.interface
此包中包含:某個頁面或對象的所用操做接口類,這個接口主要是定義這個對象的全部方法。如:IUser接口,IArticle接口,ITopic接口等動畫
8.model
這是MVC或MVP框架設計中的M。此包中包含:某個頁面或對象的所用操做類,這個類繼承了上面定義的interface接口,重寫並實現釐米那的方法。如:UserModel,ArticleMode類,TopicMode類等ui
9.ui
這個ui表示的頁面的意思,也是MVC或MVP中的V,不少人把這個包名寫成activity,實際上是不許確的,由於ui包含了activity和fragment,因此ui是四級包名,而activity和fragment是ui包下的五級包名。
activity此包中包含:Activity對象類。如:MainActivity類,HomeActivity類,FansListActivity類等。若是是使用了MVP框架模式,activity包名下還能夠有六級包名,好比:loginMVP(包含ILoginView接口類,LoginPresenter類)、seleteTopicMVP
fragment此包中包含:Fragment對象類。可是Fragment通常都是多個存在的,因此fragment包下通常還有六級包名,表示裏面是哪一個頁面的Fragment對象。
10.weight
此包中包含:自定義View或自定義對話框等視圖類。如:CursroDialog類,SpringScrollView類,ScrollListView類等
11.db
此包中包含:數據庫操做類
12.service
此包中包含:Service服務類
13.broadcast
此包中包含:Broadcast廣播接收者類
14.provider
此包中包含:Provider內容提供者類(用得不多)
包名規劃我感受對程序後期閱讀或修改有很大的幫助,特別是很大的程序,文件太多,不規劃的話本身都不知道這個類是幹什麼的!
固然若是程序中沒有這一類的文件,這個包名是能夠不寫,可是一些基本的包名,基本每一個程序都是須要的好比:ui、utils、adapter、weight、bean等
(二)類(classes)的命名規範:
通常用名詞,採用大駝峯命名法,儘可能避免縮寫,除非該縮寫是衆所周知的,好比HTML,URL,若是類名稱中包含單詞縮寫,則單詞縮寫的每一個字母均應大寫。
如下是部分示例說明:
1.activity 類,如歡迎頁面類WelcomeActivity.
2.adapter類,如商品詳情適配器ProductDetailAdapter
3.util公共方法類,如:線程池管理類:ThreadPoolManager,日誌工具類:LogUtil
4.db數據庫類,以DBHelper後綴標識。如城市數據庫:CityDBHelper
5.Service類,以Service爲後綴標識
6.BroadcastReceive,以Broadcast爲後綴標識
7.ContentProvider,以Provider爲後綴標識
(三)接口(interface):
命名規則與類同樣採用大駝峯命名法,多以able或ible結尾或以I開頭,如Runnable、Accessible、IUser。
(四)方法(methods)的命名規則:
通常使用動詞或動名詞,採用小駝峯命名法 例如:onCreate(),run()
>1.initXXX()初始化相關方法,使用init爲前綴標識
2.isXXX()、checkXXX() 方法返回值爲boolean型的請使用is或check爲前綴標識
3.getXXX()返回某個值的方法,使用get爲前綴標識
4.processXXX() 對數據進行處理的方法,儘可能使用process爲前綴標識
5.displayXXX() 彈出提示框和提示信息,使用display爲前綴標識
6.saveXXX() 與保存數據相關的,使用sav爲e前綴標識
7.resetXXX() 對數據重組的,使用reset前綴標識
8.clearXXX()removeXXX() 清除數據相關的,使用clear或remove爲前綴標識
9.drawXXX() 繪製數據或效果相關的,使用draw前綴標識
1
2
3
4
5
6
7
8
9
(五)變量(variables)採用小駝峯命名法。類中控件名稱通常與xml佈局id保持一致
(六)常量(constants)所有大寫,採用下劃線命名法.例如:MIN_WIDTH
(七)XML文件(佈局文件):所有小寫,採用下劃線命名法,
例如:main_activity.xml, item_activity.xml、homeposter_item_poster.xml
(八)資源文件(圖片): 所有小寫,採用下劃線命名法,加前綴區分
命名 說明
btn_login_normal 按鈕圖片使用btn_功能_說明
bg_head 背景圖片使用bg_功能_說明
def_search_cell 默認圖片使用def_功能_說明
icon_more_help 圖標圖片使用icon_功能_說明
seg_list_line 具備分隔特徵的圖片使用seg_功能_說明
sel_ok 選擇圖標使用sel_功能_說明
(九)動畫文件(anim包):所有小寫,採用下劃線命名法,加前綴區分。
動畫命名例子:
規範寫法 備註
click_head_left 點擊背景切換動畫使用click前綴標識
bg_shape_rectangle 背景自定義圖形使用bg前綴標識
show_shopcar_add 小動畫效果使用show前綴標識
(十)資源ID(resources id):大小寫規範與方法名一致,採用小駝峯命名法。
命名規範爲「資源控件的縮寫名」+「變量名」。例如TextView的id=「tv_userName」。注意:頁面控件名稱應該和控件id名通常是一致,例如:TextView tv_userName=(TextView)findViewById(R.id.tv_userName);
三.圖解包名規範示例
本文主要是想對程序包名的命名規劃,這裏展現我以前開發的程序的包名圖片,供你們參考:
(一)總顯示
上面example這個包名通常是不用的!
(二)ui包下
fragment展現
activity 展現:
(三)utils和weight包下
(四)res文件夾下的部分文件展現:
drawable包下:
layout包下:
上面就是一個完成程序的主要文件展現,這個程序大概有三百多個文件(包括java文件和資源文件),這裏就不一一展現了! 你們能夠想象一下,若是這個程序包名和文件名都沒有很好規劃,那麼你要找你想要的幾個文件是一個多麼麻煩的事情! 通常地,我在建立每一個java程序文件都會在上面作幾句話的註解,說明一下這個文件的做用,有些佈局文件也是有簡單說明。這樣更加有利於後期的程序代碼迭代或版本更新! 命名規範是必須的嗎?有些是!有些不是。好比包名、類的定義,系統沒有硬性規定,可是資源文件res文件夾下的命名,系統要求資源文件名必須小寫,不然,你的程序一直運行不了,你都不知道爲啥。 最後說一句:程序開發中命名規範是一個很好的開發習慣!--------------------- 做者:崢嶸life 來源:CSDN 原文:https://blog.csdn.net/wenzhi20102321/article/details/61650405 版權聲明:本文爲博主原創文章,轉載請附上博文連接!