這篇文章主要介紹“Android的編程規(guī)范是什么”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Android的編程規(guī)范是什么”文章能幫助大家解決問(wèn)題。
成都創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、隆林網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為隆林等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
命名規(guī)則
1). 類(lèi)名,接口名:
以大寫(xiě)開(kāi)頭,如果一個(gè)類(lèi)的類(lèi)名由多個(gè)單詞組成,所有單詞的首字母必須大寫(xiě),單詞盡量寫(xiě)全稱(chēng),不要簡(jiǎn)寫(xiě),除非約定俗成的名字,例如:URL,RTMP,RTSP 這些廣泛使用的專(zhuān)有名詞,可以全部大寫(xiě),也可以首字母大寫(xiě)。
例如 HttpRequest,CourseActivity
2). 局部變量,類(lèi)的成員變量,類(lèi)的成員函數(shù),函數(shù)參數(shù):
以小寫(xiě)字母開(kāi)頭其他的單詞首字母大寫(xiě),變量名不建議使用下劃線(xiàn)分隔單詞,建議使用駝峰命名法,Android的系統(tǒng)類(lèi)都采用此方法。
例如 toString() onCreateView(Bundle savedInstanceState)
3). 靜態(tài)常量:全部大寫(xiě),單詞之間使用下劃線(xiàn)分開(kāi),常量單詞全部大寫(xiě),所以單詞之間使用下劃線(xiàn)分隔。
例如 WHAT_EMPTY_CONTENT
4). 控件變量的命名,控件的ID命名:
建議:xml布局文件中的控件的id的命名與*.java的代碼文件中的控件對(duì)象的命名一致。
class MyActivity extends Activity{ TextView txtUserName ; … protected void onCreate(Bundle savedInstanceState) { txtUserName = (TextView) findViewById(R.id.txtUserName); } }
5). 常用控件以及類(lèi)對(duì)象命名的規(guī)范說(shuō)明(紅色部分為建議的前綴或者后綴):
類(lèi)名 | 變量名 | 類(lèi)名 | 變量名 |
TextView | txtDescription | ProgressBar | progressDescription |
Button | btnDescription | SeekBar | seekBarDescription |
ImageButton | imgBtnDescription | VideoView | vvDescription |
ImageView | imgDescription | Spinner | spinDescription |
RadioButton | rbDescription | WebView | webViewDescription |
EditText | editDescription | ListView | listViewDescription |
ScrollView | scrollDescription | GridView | gridDescription |
Handler | descriptionHandler | RatingBar | ratingBarDescription |
PullToRefreshListView | pullRefreshViewDescription | Adapter | descriptionAdapter |
Fragment | descriptionFragment | Activity | descriptionActivity |
List<T> | descriptionList | Map<> | mapDescription |
SlidingMenu | slidMenuDescription | ViewPager | viewPagerDescription |
CheckBox | chBoxDescription | View | viewDescription |
RadioGroup | rgDescription | ExpandableListView | expDescription |
FrameLayout | frameLayDescription | SharedPreferences | spDescription |
LinearLayout | lineLayDescription | RelativeLayout | relativeLayDescription |
startActivityForResult(requestCode) | REQUEST_CODE_DESCRIPTION | msg.what | WHAT_DESCRIPTION |
6). 資源命名:
layout資源文件的命名(全部小寫(xiě),下劃線(xiàn)分隔):
activity的資源文件:activity_description1_description2.xml
fragment的資源文件:fragment_description1_description2.xml
listview列表項(xiàng)的資源文件:list_item_description1_description2.xml
可復(fù)用(被include)的組件資源文件: control_description1_description2.xml
drawable資源: controlName_description1_description2_selector.xml
controlName表示該資源要用在什么類(lèi)型的控件上面,例如如果是按鈕的圖片切換則
應(yīng)該這么定義 button_bg_sendmessage_selector.xml
selector表示該資源的形式,例如還有shape等
圖片資源的名字:同上
顏色值的命名: color_description 以color為前綴,全部小寫(xiě),下劃線(xiàn)分隔。description既可以是該顏色值使用的功能描述,也可以是該顏色值的英文描述,也可以是具體的顏色值,例如:
<color name="color_white">#ffffff</color> <color name="color_grey_ccc">#cccccc</color> <color name="color_grey_ddd">#dddddd</color>
因?yàn)間rey可能有很多等級(jí),有時(shí)候需要不同等級(jí)的灰色,沒(méi)有那么多英文名可以區(qū)分,所以名字中可以直接使用顏色值
<color name=”color_button_pressed”>#4c4c4c</color> 根據(jù)功能定義description,表示該顏色用于按鈕被按下
注:不允許出現(xiàn)毫無(wú)意義的命名,例如textview1,textview2
關(guān)于字面常量
代碼中不允許出現(xiàn)直接硬編碼的字面常量,如果是控件上面顯示的文本,必須放在strings.xml資源文件中。 如果是代碼中用到常量字符串,必須定義成 public static final String類(lèi)型的常量值,在代碼中使用該定義的常量值。這樣做的好處是以后需要修改該常量值,只需要修改一個(gè)地方。如果是硬編碼在代碼中則要修改所有使 用它的地方,而且拷貝容易出錯(cuò)。在Activity之間傳遞參數(shù)的時(shí)候,intent.putExtra 的key值也要命名規(guī)范,并且統(tǒng)一定義為靜態(tài)常量,不能直接硬編碼在代碼中,否則想要修改的時(shí)候很麻煩。某一個(gè)Activity在被啟動(dòng)的時(shí)候需要接受參 數(shù),那么這些參數(shù)的key定義就應(yīng)該放在該Activity中。
JSON解析
Android中調(diào)用服務(wù)端的接口一般返回的是json數(shù)據(jù),在解析json的時(shí)候,無(wú)論是使用原始的手工解析方式,還是使用javabean的解 析方式,解析出來(lái)的結(jié)果在使用的時(shí)候必須都進(jìn)行判空處理。不允許因?yàn)榉?wù)端的json出問(wèn)題,導(dǎo)致app在解析json的時(shí)候出現(xiàn)崩潰。
類(lèi)成員初始化
所有類(lèi)的成員變量一定要賦初始值,不允許只定義,不賦值。
Int類(lèi)型常量
函數(shù)返回的時(shí)候,如果返回的int類(lèi)型的數(shù)據(jù)并不是真實(shí)的實(shí)用的數(shù)據(jù)值(例如表示高度,寬度,大小等值),僅僅表示函數(shù)執(zhí)行成功、失敗、異常的狀態(tài)值,并且這些值是有限的幾個(gè)值,必須要將這些值使用靜態(tài)常量描述,或者使用枚舉,例如:
int GetJsonString()
該函數(shù)返回-1表示獲取解析json數(shù)據(jù)異常,返回0表示成功,返回1表示網(wǎng)絡(luò)連接異常,返回2表示json內(nèi)容中的數(shù)據(jù)部分為空。那么在函數(shù)內(nèi)部的代碼里不要直接使用這些字面值,這些字面值對(duì)于程序員來(lái)說(shuō)是毫無(wú)意義的,代碼可閱讀性很差,建議做成下面的模式:
public static final int RESULT_PARSE_JSON_EXCEPTION = -1; public static final int RESULT_SUCCESS = 0; public static final int RESULT_NETWORK_EXCEPTION = 1; public static final int RESULT_NO_DATA = 2;
使用這些符號(hào)常量值代替字面值的好處是,符號(hào)常量值是由大寫(xiě)的英文單詞組成,是有意義的,可以幫助程序員更好的理解函數(shù)返回值的意義,而且符號(hào)常量值對(duì)應(yīng)的具體的賦值在后期是很方便修改的。
Activity接受參數(shù)與模塊化
如果一個(gè)Activity可能在多個(gè)地方被打開(kāi),或者一個(gè)Fragment可能在多個(gè)地方被用到。那么在設(shè)計(jì)該Activity和Fragment 的時(shí)候一定要考慮低耦合,對(duì)外提供統(tǒng)一的參數(shù)接口,啟
動(dòng)Activity的過(guò)程封裝在該Activity類(lèi)的靜態(tài)成員方法里面,類(lèi)似如下: class MyActivity extends Activity{ ... public static void startActivity(Context context,Params param){ Intent intent = new Intent(context, MyActivity.class); intent.putExtra("param", param); startActivity(intent); } public static void startActivityForResult(Context context,Params param){ Intent intent = new Intent(context, MyActivity.class); intent.putExtra("param", param); startActivityForResult(intent,REQUEST_CODE); } }
參數(shù)的傳遞***是封裝在一個(gè)Model實(shí)體類(lèi)中,避免使用Map這種方式進(jìn)行參數(shù)傳遞。建議該實(shí)體類(lèi)實(shí)現(xiàn)為對(duì)應(yīng)的Activity的靜態(tài)可序列化的內(nèi)部類(lèi)。
AndroidStudio工程目錄組織
AndroidStudio中的項(xiàng)目的包結(jié)構(gòu)應(yīng)該根據(jù)工程各個(gè)部分的功能來(lái)組織。
Handler的封裝
每一個(gè)Activity里面幾乎都會(huì)定義一個(gè)Handler內(nèi)部類(lèi),但是很多Activity里面的Handler都使用了重復(fù)的消息類(lèi)型,這里面 是有冗余代碼的,所以應(yīng)該把這些Activity都使用到的Handler類(lèi)的消息部分,提取成一個(gè)公用的Handler類(lèi)。然后在各個(gè)Activity 里面使用繼承的方式,來(lái)提供該Activity特有的Handler消息類(lèi)型的Handler類(lèi)實(shí)現(xiàn)。
另外Handler發(fā)送消息應(yīng)該使用Handler類(lèi)的成員函數(shù),不應(yīng)該直接使用handler.obtainMessage(xxx).sendToTarget();
這 種原始的發(fā)送消息的方式,這樣不利于降低耦合,這種細(xì)節(jié)應(yīng)該隱藏在Handler內(nèi)的里面。Handler的消息類(lèi)型應(yīng)該定義為Handler類(lèi)里面的靜 態(tài)常量,而該常量不應(yīng)是public的,對(duì)外部不可見(jiàn)。也就是說(shuō)使用handler對(duì)象發(fā)送消息的細(xì)節(jié)不應(yīng)該暴露給外部。
List的數(shù)據(jù)更新
封裝ListView的數(shù)據(jù)更新,在handlerMessage中更新數(shù)據(jù),避免出現(xiàn) java.lang.IllegalStateException 問(wèn)題
Activity與Fragment之間傳遞參數(shù)
Activity與Fragment的數(shù)據(jù)傳遞采用interface的方式,這樣可以降低耦合,有利于Fragment的復(fù)用:
網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)模塊化
一般在Activity中我們通過(guò)網(wǎng)絡(luò)請(qǐng)求服務(wù)端的接口獲得數(shù)據(jù),這個(gè)過(guò)程一般是在一個(gè)線(xiàn)程中做的,獲取到數(shù)據(jù)之后,再通過(guò)Activity中的 handler發(fā)送消息來(lái)通知Activity更新數(shù)據(jù)。該負(fù)責(zé)獲取數(shù)據(jù)的線(xiàn)程類(lèi),我們一般都實(shí)現(xiàn)為一個(gè)Activity的內(nèi)部類(lèi),該類(lèi)可以直接訪問(wèn) Activity的成員變量,例如handler,數(shù)據(jù)列表對(duì)象等。但是這樣不利于該數(shù)據(jù)獲取線(xiàn)程的復(fù)用。如果另一個(gè)Activity里面也需要獲取相同 的數(shù)據(jù),那么這個(gè)功能是不能復(fù)用的,所以這個(gè)負(fù)責(zé)數(shù)據(jù)請(qǐng)求的線(xiàn)程類(lèi),不應(yīng)該與具體的Handler和Activity聯(lián)系過(guò)于緊密。應(yīng)該定義為一個(gè)靜態(tài) 類(lèi),handler應(yīng)該作為參數(shù)傳遞進(jìn)來(lái),而不是直接訪問(wèn)外部類(lèi)的成員變量。
封裝Log功能
Log功能應(yīng)該封裝成為自動(dòng)將當(dāng)前所在類(lèi)的類(lèi)名變成log輸出的TAG參數(shù),發(fā)布的app***是能循環(huán)寫(xiě)日志文件到系統(tǒng)存儲(chǔ)中,并且日志文件應(yīng)該使用反復(fù)覆蓋的方式重復(fù)利用。下面僅僅是一個(gè)不完善的例子:
public class MyLog { public static final String TAG = "myapp "; public static void v(Object o,String message) { Log.v(TAG+o.getClass().getSimpleName(),message); } }
使用
MyLog.v(this,"hello log");
打印結(jié)果
V/myapp MainActivity﹕ hello log
版本控制
使用自動(dòng)化版本管理,自動(dòng)生成版本號(hào),使應(yīng)用程序的版本與版本庫(kù)上保持一致。使用hg替換工程目錄下的app目錄下的build.gradle文件 即可,如果manifest里面也有版本號(hào)的設(shè)置,AndroidStudio還是以build.gradle為準(zhǔn)。不應(yīng)該在每次發(fā)布的時(shí)候,在 AndroidStudio的工程設(shè)置里面手工修改版本號(hào)。
為程序添加全局異常捕獲
應(yīng)該為app添加全局異常捕獲,app中總會(huì)有一些我們未捕獲的異常,一旦用戶(hù)使用過(guò)程中遇到這樣的異常,程序就會(huì)崩潰,我們應(yīng)該檢測(cè)該類(lèi)未捕獲的異常信息,程序崩潰的時(shí)候通過(guò)寫(xiě)文件日志,或者發(fā)送郵件的方式獲得異常信息,以便解決bug。
關(guān)于“Android的編程規(guī)范是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
當(dāng)前文章:Android的編程規(guī)范是什么
分享路徑:http://muchs.cn/article24/pphoce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、定制網(wǎng)站、商城網(wǎng)站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)