欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android的編程規(guī)范是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹“Android的編程規(guī)范是什么”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Android的編程規(guī)范是什么”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺(tái)運(yùn)營(yíng)、app軟件開發(fā)、成都手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、成都溫江機(jī)房等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。

命名規(guī)則

1). 類名,接口名:

以大寫開頭,如果一個(gè)類的類名由多個(gè)單詞組成,所有單詞的首字母必須大寫,單詞盡量寫全稱,不要簡(jiǎn)寫,除非約定俗成的名字,例如:URL,RTMP,RTSP 這些廣泛使用的專有名詞,可以全部大寫,也可以首字母大寫。

例如 HttpRequest,CourseActivity

2). 局部變量,類的成員變量,類的成員函數(shù),函數(shù)參數(shù):

以小寫字母開頭其他的單詞首字母大寫,變量名不建議使用下劃線分隔單詞,建議使用駝峰命名法,Android的系統(tǒng)類都采用此方法。

例如 toString()  onCreateView(Bundle savedInstanceState)

3). 靜態(tài)常量:全部大寫,單詞之間使用下劃線分開,常量單詞全部大寫,所以單詞之間使用下劃線分隔。

例如 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). 常用控件以及類對(duì)象命名的規(guī)范說明(紅色部分為建議的前綴或者后綴):

類名

變量名

類名

變量名

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資源文件的命名(全部小寫,下劃線分隔):
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表示該資源要用在什么類型的控件上面,例如如果是按鈕的圖片切換則
應(yīng)該這么定義 button_bg_sendmessage_selector.xml
selector表示該資源的形式,例如還有shape等
圖片資源的名字:同上
顏色值的命名:  color_description  以color為前綴,全部小寫,下劃線分隔。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í)的灰色,沒有那么多英文名可以區(qū)分,所以名字中可以直接使用顏色值
<color name=”color_button_pressed”>#4c4c4c</color> 根據(jù)功能定義description,表示該顏色用于按鈕被按下

注:不允許出現(xiàn)毫無意義的命名,例如textview1,textview2

關(guān)于字面常量

代碼中不允許出現(xiàn)直接硬編碼的字面常量,如果是控件上面顯示的文本,必須放在strings.xml資源文件中。  如果是代碼中用到常量字符串,必須定義成 public static final  String類型的常量值,在代碼中使用該定義的常量值。這樣做的好處是以后需要修改該常量值,只需要修改一個(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í)候,無論是使用原始的手工解析方式,還是使用javabean的解 析方式,解析出來的結(jié)果在使用的時(shí)候必須都進(jìn)行判空處理。不允許因?yàn)榉?wù)端的json出問題,導(dǎo)致app在解析json的時(shí)候出現(xiàn)崩潰。

類成員初始化

所有類的成員變量一定要賦初始值,不允許只定義,不賦值。

Int類型常量

函數(shù)返回的時(shí)候,如果返回的int類型的數(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ì)于程序員來說是毫無意義的,代碼可閱讀性很差,建議做成下面的模式:

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)常量值是由大寫的英文單詞組成,是有意義的,可以幫助程序員更好的理解函數(shù)返回值的意義,而且符號(hào)常量值對(duì)應(yīng)的具體的賦值在后期是很方便修改的。

Activity接受參數(shù)與模塊化

如果一個(gè)Activity可能在多個(gè)地方被打開,或者一個(gè)Fragment可能在多個(gè)地方被用到。那么在設(shè)計(jì)該Activity和Fragment 的時(shí)候一定要考慮低耦合,對(duì)外提供統(tǒng)一的參數(shù)接口,啟

動(dòng)Activity的過程封裝在該Activity類的靜態(tà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í)體類中,避免使用Map這種方式進(jìn)行參數(shù)傳遞。建議該實(shí)體類實(shí)現(xiàn)為對(duì)應(yīng)的Activity的靜態(tài)可序列化的內(nèi)部類。

AndroidStudio工程目錄組織

AndroidStudio中的項(xiàng)目的包結(jié)構(gòu)應(yīng)該根據(jù)工程各個(gè)部分的功能來組織。

Handler的封裝

每一個(gè)Activity里面幾乎都會(huì)定義一個(gè)Handler內(nèi)部類,但是很多Activity里面的Handler都使用了重復(fù)的消息類型,這里面 是有冗余代碼的,所以應(yīng)該把這些Activity都使用到的Handler類的消息部分,提取成一個(gè)公用的Handler類。然后在各個(gè)Activity 里面使用繼承的方式,來提供該Activity特有的Handler消息類型的Handler類實(shí)現(xiàn)。

另外Handler發(fā)送消息應(yīng)該使用Handler類的成員函數(shù),不應(yīng)該直接使用handler.obtainMessage(xxx).sendToTarget();這 種原始的發(fā)送消息的方式,這樣不利于降低耦合,這種細(xì)節(jié)應(yīng)該隱藏在Handler內(nèi)的里面。Handler的消息類型應(yīng)該定義為Handler類里面的靜 態(tài)常量,而該常量不應(yīng)是public的,對(duì)外部不可見。也就是說使用handler對(duì)象發(fā)送消息的細(xì)節(jié)不應(yīng)該暴露給外部。

List的數(shù)據(jù)更新

封裝ListView的數(shù)據(jù)更新,在handlerMessage中更新數(shù)據(jù),避免出現(xiàn) java.lang.IllegalStateException 問題

Activity與Fragment之間傳遞參數(shù)

Activity與Fragment的數(shù)據(jù)傳遞采用interface的方式,這樣可以降低耦合,有利于Fragment的復(fù)用:

Android的編程規(guī)范是什么

網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)模塊化

一般在Activity中我們通過網(wǎng)絡(luò)請(qǐng)求服務(wù)端的接口獲得數(shù)據(jù),這個(gè)過程一般是在一個(gè)線程中做的,獲取到數(shù)據(jù)之后,再通過Activity中的 handler發(fā)送消息來通知Activity更新數(shù)據(jù)。該負(fù)責(zé)獲取數(shù)據(jù)的線程類,我們一般都實(shí)現(xiàn)為一個(gè)Activity的內(nèi)部類,該類可以直接訪問 Activity的成員變量,例如handler,數(shù)據(jù)列表對(duì)象等。但是這樣不利于該數(shù)據(jù)獲取線程的復(fù)用。如果另一個(gè)Activity里面也需要獲取相同 的數(shù)據(jù),那么這個(gè)功能是不能復(fù)用的,所以這個(gè)負(fù)責(zé)數(shù)據(jù)請(qǐng)求的線程類,不應(yīng)該與具體的Handler和Activity聯(lián)系過于緊密。應(yīng)該定義為一個(gè)靜態(tài) 類,handler應(yīng)該作為參數(shù)傳遞進(jìn)來,而不是直接訪問外部類的成員變量。

封裝Log功能

Log功能應(yīng)該封裝成為自動(dòng)將當(dāng)前所在類的類名變成log輸出的TAG參數(shù),發(fā)布的app***是能循環(huán)寫日志文件到系統(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)用程序的版本與版本庫上保持一致。使用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ì)有一些我們未捕獲的異常,一旦用戶使用過程中遇到這樣的異常,程序就會(huì)崩潰,我們應(yīng)該檢測(cè)該類未捕獲的異常信息,程序崩潰的時(shí)候通過寫文件日志,或者發(fā)送郵件的方式獲得異常信息,以便解決bug。

關(guān)于“Android的編程規(guī)范是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

新聞名稱:Android的編程規(guī)范是什么-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://aaarwkj.com/article20/dpgcjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、微信公眾號(hào)、網(wǎng)站制作、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
啊啊啊用力好大视频| 天天操夜夜操夜夜操| 国产99热这里只有精品| 免费观看在线黄色大片| 日韩视频专区一区二区| 日本熟妇色在线视频不卡| 日韩精品在线观看不卡| 91国内偷拍富婆国内精品对白| 五月天色婷婷亚洲综合一区| 亚洲精品国产中文字幕| 日韩一级毛一片欧美一级| 亚洲国产精品97视频| 精品一级人片内射视频| 亚洲精品女同专区视频| 欧美性大片免费在线观看| 亚洲综合欧美自偷自拍| 日本熟妇一区二区三区高清视频| 久久精品亚洲精品国产| 有码精品视频在线观看| 亚洲高清精品一区二区| 亚洲免费视频区一区二| 中文字幕日韩一区二区| 99精品国产综合久久麻豆| 丁香婷婷综合激情五月| 四虎永久精品在线视频| 久久综合视频大片视频| 色综合视频二区偷拍在线| 国产av剧情同事肉体秘密| 亚洲黄色av一区二区三区| 亚洲综合一区二区精品久久| 91麻豆精品国产91久| 日本韩国黄色三级三级| 成人永久免费播放平台| 中文字幕国产精品一二区| 成人性生交大片免费看中文 | 国产亚洲精品女人久久久| 国产九色av在线一区尤物| 亚洲一区成人免费电影| 日本一区二区免费视频| 女同亚洲一区二区三区| 精品欧美黑人一区二区|