Android開發(fā)代碼規(guī)范?

來源

http://www.cnblogs.com/SharkBin/p/3999814.html

1.命名基本原則
在面向?qū)ο缶幊讨性刖叮瑢τ陬惙湛瑢ο螅椒ǖ肃冢兞康确矫娴拿欠浅S屑记傻纳嗣1热缟帽剩笮懙膮^(qū)分,使用不同字母開頭等等屯援。但究其本猛们,追其源,在為一個資源其名稱的時候狞洋,應(yīng)該本著描述性以及唯一性這兩大特征來命名弯淘,才能保證資源之間不沖突,并且每一個都便于記憶吉懊。
對于理解應(yīng)用程序的邏輯流庐橙,命名方案是最有影響力的一種幫助假勿。名稱應(yīng)該說明“什么”而不是“如何”。命名原則是:使名稱足夠長以便有一定的意義态鳖,并且足夠短以避免冗長转培。唯一名稱在編程上僅用于將各項(xiàng)區(qū)分開。以下幾點(diǎn)是規(guī)范的命名方法浆竭。

2.命名基本規(guī)范
2.1.編程基本命名規(guī)范
(1)避免難懂的名稱浸须,如屬性名xxK8,這樣的名稱會導(dǎo)致多義性兆蕉。
(2) 在面向?qū)ο蟮恼Z言中羽戒,在類屬性的名稱中包含類名是多余的,如Book.BookTitle虎韵,而是應(yīng)該使用Book.Title。
(3)在允許函數(shù)重載的語言中缸废,所有重載都應(yīng)該執(zhí)行相似的函數(shù)包蓝。
(4)使用動詞-名詞的方法來命名對給定對象執(zhí)行特定操作的例程,如CalculateInvoiceTotal()企量。(例程是某個系統(tǒng)對外提供的功能接口或服務(wù)的集合)
(5)只要合適测萎,在變量名的末尾或開頭加計(jì)算限定符(Avg、Sum届巩、Min硅瞧、Max、Index)恕汇。
(6)在變量名中使用互補(bǔ)對腕唧,如min/max、begin/end和open/close瘾英。
(7)布爾變量名應(yīng)該包含Is枣接,這意味著Yes/No 或 True/False 值,如 fileIsFound缺谴。
(8)即使對于可能僅出現(xiàn)在幾個代碼行中的生存期很短的變量但惶,仍然使用有意義的名 稱。僅對于短循環(huán)索引使用單字母變量名湿蛔,如 i 或 j膀曾。
(9)為了幫助區(qū)分變量和例程,對例程名稱使用Pascal大小寫處理 (CalculateInvoiceTotal)阳啥,其中每個單詞的第 一個字母都是大寫的添谊。對于變量名,使用 camel大小寫處理 (documentFormatType)苫纤,其中除了第一個單詞外每個單詞的第一個字母都是大寫的碉钠。
(10)不要使用原義數(shù)字或原義字符串纲缓,而是使用命名常數(shù),NUM_DAYS_IN_WEEK 喊废,以便于維護(hù)和理解祝高。

2.2.分類命名規(guī)范
(1)包的命名
Java包的名字都是由小寫單詞組成。但是由于Java面向?qū)ο缶幊痰奶匦晕劭辏恳幻鸍ava程序員都可以編寫屬于自己的Java包工闺,為了保障每個Java包命名的唯一性,在最新的Java編程規(guī)范中瓣蛀,要求程序員在自己定義的包的名稱之前加上唯一的前綴陆蟆。由于互聯(lián)網(wǎng)上的域名稱是不會重復(fù)的,所以程序員一般采用自己在互聯(lián)網(wǎng)上的域名稱作為自己程序包的唯一前綴惋增。
例如: net.frontfree.javagroup
(2)類的命名
類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫叠殷;如果類名稱由多個單詞組成,則每個單詞的首字母均應(yīng)為大寫例如TestPage诈皿;如果類名稱中包含單詞縮寫林束,則這個所寫詞的每個字母均應(yīng)大寫,如:XMLExample,還有一點(diǎn)命名技巧就是由于類是設(shè)計(jì)用來代表對象的稽亏,所以在命名類時應(yīng)盡量選擇名詞壶冒。
例如: Circle
(3)方法的命名
方法的名字的第一個單詞應(yīng)以小寫字母作為開頭,后面的單詞則用大寫字母開頭截歉。
例如: sendMessge
(4).常量的命名
常量的名字應(yīng)該都使用大寫字母胖腾,并且指出該常量完整含義。如果一個常量名稱由多個單詞組成瘪松,則應(yīng)該用下劃線來分割這些單詞咸作。
例如: MAX_VALUE
(5)參數(shù)的命名
參數(shù)的命名規(guī)范和方法的命名規(guī)范相同,而且為了避免閱讀程序時造成迷惑凉逛,請?jiān)诒M量保證參數(shù)名稱為一個單詞的情況下使參數(shù)的命名盡可能明確性宏。
(6)Javadoc注釋
Java除了可以采用我們常見的注釋方式之外,Java語言規(guī)范還定義了一種特殊的注釋状飞,也就是我們所說的Javadoc注釋毫胜,它是用來記錄我們代碼中的API的。Javadoc注釋是一種多行注釋诬辈,以/開頭酵使,而以/結(jié)束,注釋可以包含一些HTML標(biāo)記符和專門的關(guān)鍵詞焙糟。使用Javadoc注釋的好處是編寫的注釋可以被自動轉(zhuǎn)為在線文檔口渔,省去了單獨(dú)編寫程序文檔的麻煩。
例如:
/
*

  • This is an example of
  • Javadoc
  • @author darchon
  • @version 0.1, 10/11/2002
    */
    在每個程序的最開始部分穿撮,一般都用Javadoc注釋對程序的總體描述以及版權(quán)信息缺脉,之后在主程序中可以為每個類痪欲、接口、方法攻礼、字段添加Javadoc注釋业踢,每個注釋的開頭部分先用一句話概括該類、接口礁扮、方法知举、字段所完成的功能,這句話應(yīng)單獨(dú)占據(jù)一行以突出其概括作用太伊,在這句話后面可以跟隨更加詳細(xì)的描述段落雇锡。在描述性段落之后還可以跟隨一些以Javadoc注釋標(biāo)簽開頭的特殊段落,例如上面例子中的@auther和@version僚焦,這些段落將在生成文檔中以特定方式顯示锰提。
    雖然為一個設(shè)計(jì)低劣的程序添加注釋不會使其變成好的程序,但是如果按照編程規(guī)范編寫程序并且為程序添加良好的注釋卻可以幫助你編寫出設(shè)計(jì)完美芳悲,運(yùn)行效率高且易于理解的程序欲账,尤其是在多人合作完成同一項(xiàng)目時編程規(guī)范就變得更加重要。俗話說“磨刀不誤砍柴工”芭概,花費(fèi)一點(diǎn)時間去適應(yīng)一下Java編程規(guī)范是有好處的。

3.分類命名規(guī)范
3.1.基本數(shù)據(jù)類型命名規(guī)范
Integer:int+描述 Char:chr+描述 Boolean:bln+描述
Long:lng+描述 Short:shr +描述 Double:dbl+描述
String:str+描述 Float:flt+描述 Single:sng+描述
DataTime:dt+描述 Array:arr+描述 Object:obj+描述
如:String srtName;

3.2.控件命名規(guī)范
TextView :txt_+描述 Button :btn_+描述
ImageButton :imgBtn_+描述 ImageView :imgView_+描述
CheckBox :chk_+描述 RadioButton :rdoBtn_+描述
AnalogClock :anaClk_+描述 DigitalClock :DgtClk_+描述
DatePicker :dtPk_+描述 TimePicker :tmPk +描述
ToggleButton :tglBtn
+描述 EditText:edtTxt_+描述
ProgressBar:lcb_+描述 SeekBar:skBar +描述
AutoCompleteTextView:autoTxt
+描述 MultiAutoCompleteTextView:mlAutoTxt_+描述
ZoomControls:zmCtrl_+描述 Include:ind_+描述
VideoView:vdoVi_+描述 WebView:webVi_+描述
RatingBar:ratBar_+描述 Tab:tab__+描述
Spinner:spn_+描述 Chronometer:Cmt_+描述
ScrollView:sclVi_+描述 TextSwitcher:txtSwt_+描述
Gallery:gal_+描述 ImageSwitcher:imgSwt_+描述
GridView:gV_+描述 ListView:lVi_+描述
ExpandableList: epdLt_+描述 MapView: mapVi_+描述

控件說明如下:
? TextView - 文本顯示控件
? Button - 按鈕控件
? ImageButton - 圖片按鈕控件
? ImageView - 圖片顯示控件
? CheckBox - 復(fù)選框控件
? RadioButton - 單選框控件
? AnalogClock - 鐘表(帶表盤的那種)控件
? DigitalClock - 電子表控件
? DatePicker - 日期選擇控件
? TimePicker - 時間選擇控件
? ToggleButton - 雙狀態(tài)按鈕控件
? EditText - 可編輯文本控件
? ProgressBar - 進(jìn)度條控件
? SeekBar - 可拖動的進(jìn)度條控件
? AutoCompleteTextView - 支持自動完成功能的可編輯文本控件
? MultiAutoCompleteTextView - 支持自動完成功能的可編輯文本控件惩嘉,允許輸入多值(多值之間會自動地用指定的分隔符 分開)
? ZoomControls - 放大/縮小按鈕控件
? Include - 整合控件
? VideoView - 視頻播放控件
? WebView - 瀏覽器控件
? RatingBar - 評分控件
? Tab - 選項(xiàng)卡控件
? Spinner - 下拉框控件
? Chronometer - 計(jì)時器控件
? ScrollView - 滾動條控件
? TextSwitcher - 文字轉(zhuǎn)換器控件(改變文字時增加一些動畫效果)
? Gallery –畫廊控件
? ImageSwitcher - 圖片轉(zhuǎn)換器控件(改變圖片時增加一些動畫效果)
? GridView - 網(wǎng)格控件
? ListView - 列表控件
? ExpandableList - 支持展開/收縮功能的列表控件

3.3.變量命名規(guī)范
變量命名:前綴+類型描述+意義描述
前綴:
成員變量:m_*** 局部變量:l_*** 形參:a_***
常量:大寫*** 枚舉值:em***

3.4.程序規(guī)范
工程的命名為:描述
應(yīng)用程序名的命名為:描述+App

4.代碼書寫規(guī)范
(1)建立標(biāo)準(zhǔn)的縮進(jìn)大邪罩蕖(如四個空格),并一致地使用此標(biāo)準(zhǔn)文黎。用規(guī)定的縮進(jìn)對齊代碼節(jié)惹苗。
(2)在發(fā)布源代碼的硬拷貝版本時使用特定的字體以及字號(新宋體、小五號)耸峭。
(3)在括號對對齊的位置垂直對齊左括號和右括號桩蓉,如:
for (i=0; i<100; i++)
{
;
}
(4)沿邏輯結(jié)構(gòu)行縮進(jìn)代碼使代碼更易于閱讀和理解,如:
if(expression)
{
if(expression )
{
//
//此處填寫你的代碼塊;
//
}
else
{
//
//此處填寫你的代碼塊;
//
}
}
(5)為注釋和代碼建立最大的行長度劳闹,以避免不得不滾動源代碼編輯器院究,并且可以提供整齊的硬拷貝表示形式。
(6)當(dāng)一行內(nèi)容太長而必須換行時本涕,在后面換行代碼中要使用縮進(jìn)格式业汰,如下:
string inserString ="Insert Into TableName(username,password,email,sex,address) "
+"Values( 'Soholife ', 'chenyp ', 'soholife@sina.com ', 'male ', '深圳福田 ') ";
(7)每一行上放置的語句避免超過一條。特殊循環(huán)如for(i =0;i<100;i++)等除外菩颖。
(8)編寫SQL語句時样漆,對于關(guān)鍵字使用全部大寫,對于數(shù)據(jù)庫元素(如表晦闰、列和視圖)使用大小寫混合放祟。例如SELECT * FROM Table1鳍怨;
(9)將每個主要的SQL子句放在不同的行上,這樣更容易閱讀和編輯語句跪妥,例如:
SELECT FirstName, LastName
FROM Customers
WHERE State = 'WA '
(10)在物理文件之間在邏輯上劃分源代碼鞋喇。
(11)使用空白為源代碼提供結(jié)構(gòu)線索。這樣做會創(chuàng)建代碼“段”骗奖,有助于讀者理解軟件的邏輯分段
(12)將大的復(fù)雜代碼段分為較小的确徙、易于理解的模塊。

5.注釋
軟件文檔以兩種形式存在:外部的和內(nèi)部的执桌。外部文檔(如規(guī)范鄙皇、幫助文件和設(shè)計(jì)文檔)在源代碼的外部維護(hù)。內(nèi)部文檔由開發(fā)人員在開發(fā)時在源代碼中編寫的注釋組成仰挣。
不考慮外部文檔的可用性伴逸,由于硬拷貝文檔可能會放錯地方,源代碼清單應(yīng)該能夠獨(dú)立存在膘壶。外部文檔應(yīng)該由規(guī)范错蝴、設(shè)計(jì)文檔、更改請求颓芭、錯誤歷史記錄和使用的編碼標(biāo)準(zhǔn)組成顷锰。 以下幾點(diǎn)是規(guī)范的注釋方法:
(1)一個工程應(yīng)有一個統(tǒng)一的頭文件注釋,以說明整個工程的信息亡问、創(chuàng)建日期官紫、版本等等
(2)對重要的程序加注釋進(jìn)行說明
(3)修改代碼或刪除時,將原代碼用注釋的方法屏蔽州藕,同時要加開發(fā)者自身對修改操作的注釋束世。格式為:
//原代碼
//Added/(Modified/ Deleted) by 開發(fā)者姓名 年-月-日;
//因?yàn)闃I(yè)務(wù)原因修改的,要注明修改或刪除原因)
新代碼
(4)使用XML文檔格式床玻,如下面方法的注釋:
/// <summary>
/// 得到某人的年齡
/// </summary>
/// <param name= "userName "> 用戶名 </param>
/// <returns> 用戶年齡 </returns>
public int GetUserAge(string userName)
{
//
//此處寫你的程序代碼
//
}
(5)避免雜亂的注釋毁涉,而是應(yīng)該使用空白將注釋同代碼分開。
(6)移除所有臨時或無關(guān)的注釋锈死,以避免在日后的維護(hù)工作中產(chǎn)生混亂贫堰。
(7)注釋應(yīng)對代碼進(jìn)行準(zhǔn)確的說明,不應(yīng)存在歧義馅精。
(8)在整個應(yīng)用程序中严嗜,使用具有一致的標(biāo)點(diǎn)和結(jié)構(gòu)的統(tǒng)一樣式來構(gòu)造注釋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洲敢,一起剝皮案震驚了整個濱河市漫玄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖睦优,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渗常,死亡現(xiàn)場離奇詭異,居然都是意外死亡汗盘,警方通過查閱死者的電腦和手機(jī)皱碘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隐孽,“玉大人癌椿,你說我怎么就攤上這事×庹螅” “怎么了踢俄?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晴及。 經(jīng)常有香客問我都办,道長,這世上最難降的妖魔是什么虑稼? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任琳钉,我火速辦了婚禮,結(jié)果婚禮上蛛倦,老公的妹妹穿的比我還像新娘歌懒。我一直安慰自己,他們只是感情好溯壶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布歼培。 她就那樣靜靜地躺著,像睡著了一般茸塞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上查剖,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天钾虐,我揣著相機(jī)與錄音,去河邊找鬼笋庄。 笑死效扫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的直砂。 我是一名探鬼主播菌仁,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼静暂!你這毒婦竟也來了济丘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摹迷,沒想到半個月后疟赊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峡碉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年近哟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲫寄。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡吉执,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出地来,到底是詐尸還是另有隱情戳玫,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布靠抑,位于F島的核電站量九,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏颂碧。R本人自食惡果不足惜荠列,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望载城。 院中可真熱鬧肌似,春花似錦、人聲如沸诉瓦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睬澡。三九已至固额,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煞聪,已是汗流浹背斗躏。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昔脯,地道東北人啄糙。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像云稚,于是被迫代替她去往敵國和親隧饼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評論 25 707
  • Android編碼規(guī)范 源文件基礎(chǔ) 文件名 源文件以其最頂層的類名來命名静陈,大小寫敏感燕雁,文件擴(kuò)展名為.java。 文...
    呼呼哥閱讀 936評論 0 0
  • 作者:李旺成 時間:2016年4月3日 1. 前言 這份文檔參考了 Google Java 編程風(fēng)格規(guī)范和 Goo...
    diygreen閱讀 39,873評論 19 224
  • 一直覺得20幾歲是一個無所顧忌,開心享受獨(dú)自生活的年紀(jì)贵白,但不知道有多少人和我一樣畢業(yè)前爸媽各種苦口婆心率拒,學(xué)業(yè)...
    孔孔hi閱讀 113評論 0 1
  • 一位偉大的詩人曾經(jīng)這樣寫道:播種思想,便收獲行動禁荒;播種行動猬膨,便收獲習(xí)慣;播種習(xí)慣呛伴,便收獲性格勃痴;播種性格,便收獲命運(yùn)...
    婉雅閱讀 950評論 1 2