




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Android編碼規(guī)范版本修訂內容作者時間0.1初稿曹斌2014-02-20介紹1. 為什么需要編碼規(guī)范?編碼規(guī)范對于程序員而言尤為重要,有以下幾個原因: l 一個軟件的生命周期中,80%的花費在于維護 l 幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發(fā)人員來維護 l 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼 l 如果你將源碼作為產品發(fā)布,就需要確任它是否被很好的打包并且清晰無誤,一如你已構建的其它任何產品命名2. 包命名命名規(guī)則:一個唯一包名的前綴總是全部小寫的ASCII 字母并且是一個頂級域名,通常是com,edu,gov,mil,net,org。包名的
2、后續(xù)部分根據不同機構各自內部的命名規(guī)范而不盡相同。這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門 (department) ,項目(project),機器(machine),或注冊名(login names)。例如: cn.betatown.mobile.yourmart規(guī)約:包命名必須以cn.betatown.mobile開始,后面跟有項目名稱(或者縮寫),再后面為模塊名或層級名稱。如:cn.betatown.mobile.項目縮寫.模塊名 à cn.betatown.mobile.yourmart.game如:cn.betatown.mobile.項目縮寫.層級名 à c
3、n.betatown.mobile.yourmart.ui3. 類和接口 命名命名規(guī)則:類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量使你的類名簡潔而富于描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像 URL,HTML) 接口一般要使用able、ible、er 等后綴例如: class Raster; class ImageSprite;規(guī)約:類名必須使用駝峰規(guī)則,即首字母必須大寫,如果為詞組,則每個單詞的首字母也必須要大寫,類名必須使用名詞,或名詞詞組。要求類名簡單,不允許出現(xiàn)無意義的單詞。4. 方法的命名命名規(guī)則:方法名是一個動詞,采用大小寫混合的方式,第一
4、個單詞的首字母小寫,其后單詞的首字母大寫。例如: public void run(); public String getBookName();類中常用方法的命名:1. 類的獲取方法(一般具有返回值)一般要求在被訪問的字段名前加上get,如getFirstName(),getLastName()。一般來說,get前綴方法返回的是單個值,find前綴的方法返回的是列表值。2. 類的設置方法(一般返回類型為void):被訪問字段名的前面加上前綴 set,如setFirstName(),setLastName().3. 類的布爾型的判斷方法一般要求方法名使用單詞 is或has 做前綴,如isPers
5、istent(),isString()。或者使用具有邏輯意義的單詞,例如equal 或equals。4. 類的普通方法一般采用完整的英文描述說明成員方法功能,第一個單詞盡可能采用動詞,首字母小寫,如openFile(),addCount()。5. 構造方法應該用遞增的方式寫。(參數(shù)多的寫在后面)。5. 變量命名命名規(guī)則:第一個單詞的首字母小寫,其后單詞的首字母大寫。變量名不應以下劃線或美元符號開頭,盡管這在語法上是允許的。變量名應簡短且富于描述。變量名的選用應該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。臨時變量通常被取名為 i,j,k,m 和 n,它們一般
6、用于整型;c,d,e,它們一般用于字符型。例如:String bookName; 規(guī)約:變量命名也必須使用駝峰規(guī)則,但是首字母必須小寫,變量名盡可能的使用名詞或名詞詞組。同樣要求簡單易懂,不允許出現(xiàn)無意義的單詞。如:String bookName; à 正確如:String bookNameString; à錯誤!6. 成員變量命名同變量命名,但要在成員變量前添加m字樣!例外:在使用Gson庫將json字符串轉換為相應的javaBean可以不用在變量前添加m字樣前綴。7. 常量命名命名規(guī)則:類常量的聲明,應該全部大寫,單詞間用下劃線隔開。例如:static final in
7、t MIN_WIDTH = 4; 例如:static final int MAX_WIDTH = 999; 例如:static final int GET_THE_CPU = 1; 8. 異常命名自定義異常的命名必須以Exception為結尾。已明確標示為一個異常。9. layout 命名規(guī)約:layout xml 的命名必須以 全部單詞小寫,單詞間以下劃線分割,并且使用名詞或名詞詞組,即使用 模塊名_功能名稱 來命名。如:knowledge_gained_main.xmlà正確如:list_book.xmlà錯誤!10. id 命名規(guī)約:layout 中所使用的id必須以
8、全部單詞小寫,單詞間以下劃線分割,并且使用名詞或名詞詞組,并且要求能夠通過id直接理解當前組件要實現(xiàn)的功能。如:某TextView +id/textbookname à錯誤 !應為 +id/book_name_show如:某EditText +id/textbookname à錯誤 !應為 +id/book_name_edit11. 資源命名規(guī)約:layout中所使用的所有資源(如drawable,style等)命名必須以全部單詞小寫,單詞間以下劃線分割,并且盡可能的使用名詞或名詞組,即使用 模塊名_用途 來命名。如果為公共資源,如分割線等,則直接用用途來命名如:menu_
9、icon_navigate.png à 正確如:某分割線:line.png 或 separator.png à正確注釋Java 程序有兩類注釋:實現(xiàn)注釋(implementation comments)和文檔注釋(document comments)。實現(xiàn)注釋是使用/*.*/和/界定的注釋。文檔注釋(被稱為"doc comments")由/*.*/界定。文檔注釋可以通過javadoc 工具轉換成HTML 文件。1. 文件注釋所有的源文件都應該在開頭有一個注釋,其中列出類名、版本信息、日期和版權聲明。如下: /* * 文件名 * 包含類名列表 * 版本信息
10、,版本號 * 創(chuàng)建日期。 * 版權聲明 */2. 類注釋每一個類都要包含如下格式的注釋,以說明當前類的功能等。/* * 類名 * author 作者 <br/> *實現(xiàn)的主要功能。 *創(chuàng)建日期*修改者,修改日期,修改內容。*/3. 方法注釋每一個方法都要包含 如下格式的注釋 包括當前方法的用途,當前方法參數(shù)的含義,當前方法返回值的內容和拋出異常的列表。/* * * 方法的一句話概述 * <p>方法詳述(簡單方法可不必詳述)</p> * param s 說明參數(shù)含義 * return 說明返回值含義 * throws IOException 說明發(fā)生此異常的條
11、件 * throws NullPointerException 說明發(fā)生此異常的條件 */4. 類成員變量和常量注釋成員變量和常量需要使用java doc形式的注釋,以說明當前變量或常量的含義/* XXXX含義 */ 5. 其他注釋方法內部的注釋 如果需要多行 使用/* */形式,如果為單行是用/形式的注釋。不要再方法內部使用 java doc 形式的注釋“/*/”,簡單的區(qū)分方法是,java doc形式的注釋在 eclipse中為藍色,普通注釋為綠色。6. XML注釋規(guī)約:如果當前l(fā)ayout 或資源需要被多處調用,或為公共使用的layout(若list_item),則需要在xml寫明注釋。
12、要求注釋清晰易懂。代碼風格1. 縮進規(guī)約:不允許使用Tab進行縮進,使用空格進行縮進,推薦縮進為4空格。2. 空行空行將邏輯相關的代碼段分隔開,以提高可讀性。 下列情況應該總是使用空行: l 一個源文件的兩個片段(section)之間l 類聲明和接口聲明之間l 兩個方法之間l 方法內的局部變量和方法的第一條語句之間l 一個方法內的兩個邏輯段之間,用以提高可讀性 規(guī)約:通常在 變量聲明區(qū)域之后要用空行分隔,常量聲明區(qū)域之后要有空行 分隔,方法聲明之前要有空行分隔。3. 行寬無特別規(guī)定,因為現(xiàn)在的顯示器都比較大,所以推薦使用120進行設置。規(guī)約1. 方法l 一個方法盡量不要超過15行,如果方法太長
13、,說明當前方法業(yè)務邏輯已經非常復雜,那么就需要進行方法拆分,保證每個方法只作一件事。l 不要使用 try catch 處理業(yè)務邏輯!2. 參數(shù)和返回值l 一個方法的參數(shù)盡可能的不要超過4個!l 如果一個方法返回的是一個錯誤碼,請使用異常!l 盡可能不要使用null, 替代為異常 或者使用空變量 如返回 List 則可以使用Collections.emptyList()3. 神秘的數(shù)代碼中不允許出現(xiàn)單獨的數(shù)字,字符!如果需要使用數(shù)字或字符,則將它們按照含義封裝為靜態(tài)常量?。╢or語句中除外)4. 控制語句判斷中如有常量,則應將常量置于判斷式的右側。如:if ( true = isAdmin().
14、盡量不使用三目條件的嵌套。所有if 語句必須用包括起來,即便是只有一句:if (true)/do something.if (true)i = 0; /不要使用這種對于循環(huán):/不推薦方式_while(index < products.getCount()/每此都會執(zhí)行一次getCount()方法,/若此方法耗時則會影響執(zhí)行效率/而且可能帶來同步問題,若有同步需求,請使用同步塊或同步方法/推薦方式_/將操作結構保存在臨時變量里,減少方法調用次數(shù)final int count = products.getCount();while(index < count)5. 異常的捕捉處理l 通
15、常的思想是只對錯誤采用異常處理:邏輯和編程錯誤,設置錯誤,被破壞的數(shù)據,資源耗盡,等等。l 通常的法則是系統(tǒng)在正常狀態(tài)下以及無重載和硬件失效狀態(tài)下,不應產生任何異常。l 最小化從一個給定的抽象類中導出的異常的個數(shù)。對于經常發(fā)生的可預計事件不要采用異常。不要使用異常實現(xiàn)控制結構。l 若有finally 子句,則不要在try 塊中直接返回,亦不要在finally 中直接返回。6. 訪問控制若沒有足夠理由,不要把實例或類變量聲明為公有。通常,實例變量無需顯式的設置(set)和獲取(gotten),通常這作為方法調用的邊緣效應 (side effect)而產生。 一個具有公有實例變量的恰當例子,是類僅
16、作為數(shù)據結構,沒有行為。亦即,若你要使用一個結構(struct)而非一個類(如果java 支持結構的話),那么把類的實例變量聲明為公有是合適的。約定俗成1. 變量賦值避免在一個語句中給多個變量賦相同的值。它很難讀懂。例如: fooBar.fChar = barFoo.lchar = 'c'不要將賦值運算符用在容易與相等關系運算符混淆的地方。例如: if (c+ = d+) / AVOID! (Java disallows) . 應該寫成 if (c+ = d+) != 0) . 不要使用內嵌(embedded)賦值運算符試圖提高運行時的效率,這是編譯器的工作。例如: d = (a = b + c) + r; / AVOID! 應該寫成 a = b + c; d = a + r; 2. 圓括號 一般而言,在含有多種運算符的表達式中使用圓括號來避免運算符優(yōu)先級問題,是個好方法。即使運算符的優(yōu)先級對你而言可能很清楚,但對其他人未必如此。你不能假設別的程序員和你一樣清楚運算符的優(yōu)先級。 if (a = b && c = d) / AVOID! if (a = b) && (c = d) / RIGHT3. 返回值 設法讓你的程序結構符合目的。例如: if (booleanExpressio
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水產養(yǎng)殖基地土地使用權合同
- 公司技術服務采購合同
- 豪華酒店廚師服務合同
- 電子產品購銷合同標準版
- 房地產投資專項法律服務合同
- (完整版)農村土地租賃合同書
- 光學玻璃的紫外光固化涂層技術考核試卷
- 醫(yī)療用品行業(yè)服務平臺拓展考核試卷
- 搪瓷原材料市場動態(tài)與價格趨勢考核試卷
- 數(shù)字出版物的長期保存與數(shù)字遺產考核試卷
- GB/T 19470-2004土工合成材料塑料土工網
- GB/T 18913-2002船舶和航海技術航海氣象圖傳真接收機
- 高中教師先進事跡材料范文六篇
- 烹飪專業(yè)英語課件
- 3d3s基本操作命令教程課件分析
- 人教版三年級語文下冊晨讀課件
- 傳染病防治法培訓講義課件
- 河南大學版(2020)信息技術六年級下冊全冊教案
- 法律方法階梯實用版課件
- DB32T 4353-2022 房屋建筑和市政基礎設施工程檔案資料管理規(guī)程
- 白描課件講義整理
評論
0/150
提交評論