android 代碼規(guī)范_第1頁
android 代碼規(guī)范_第2頁
android 代碼規(guī)范_第3頁
android 代碼規(guī)范_第4頁
android 代碼規(guī)范_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Android(java)編碼規(guī)范版本日期說明V1.0V1.12015.01.31確定資源文件命名規(guī)范命名規(guī)范源代碼命名標識符命名規(guī)則示例包全部用小寫字母,以ject開頭,common為機構名,公共庫則跟以庫的功能英文縮寫。建議各個項目以MVC模式區(qū)分包的功能。ject.ui.*;ject.model.*;ject.controller.*;類名詞,每個單詞手寫字母大寫,類名要使用完整單詞,避免使用縮寫(除該詞被廣泛使用外,如URL,HTML)。class ImageLoader;class GestureDetector;接口跟類名一致

2、,以*able, *ible,*er為后綴。interface Dragable;方法動詞,第一個單詞小寫,從第二個單詞起每個單詞首字母大寫。void start();void startLoad(); 常量全部字符大寫,以下劃線形式連接單詞public static final int MAX_WIDTH = 100;靜態(tài)成員變量以s開頭,其他與局部變量一致private static MyClass sSingleton;非公有,非靜態(tài)成員變量首字符為mprivate int mPrivate;公有變量第一個單詞小寫,從第二個單詞起每個單詞首字符大寫public int publicFie

3、ld;局部變量/參數(shù)第一個單詞小寫,從第二單詞起每個單詞首字符大寫float myWidth;資源文件命名類別命名規(guī)則示例layout(片段)功能功能_控件browser_link_context_headerselect_dialog_multichoice Activity->對應layoutApiDemoActivity:功能Layout:功能NoteEditor->note_editor.xmlXXXActivity->xxx.xml drawableic_功能ic_控件_功能功能_狀態(tài)view(縮寫)_功能_狀態(tài)建議view的縮寫統(tǒng)一為: Linearlayout:

4、llRelativelayout:rlTextView:tv ImageView:ivImageButton:ibButton:btnAnimation:animic_input_addic_dialog_alertpresence_offlinebtn_star_big_on(/off)多狀態(tài)的drawable(無參考)view(縮寫)_功能_selectorbtn_goods_selector.xml自定義動畫(layout_)描述slide_inlayout_grid_inverse_fade字符串資源 功能 組件_功能 Ps:建議所有的中文字符串都寫在xml中,以免出現(xiàn)亂碼cancel

5、 search_gopersonal_titlelayout中的id->activity中view命名view縮寫_功能btn_start_search->mBtnStartSearch 或者mStartSearchBtn 或者mStartSearchButton color通用顏色功能或應用場景為通用性和版本迭代考慮,不要在具體的功能或者場景前面加bg_,以及后面加上具體顏色描述,顏色很可能會改變的lightyelloworder_unchoose_tv_namebg_column_source_textcolor_grayPs:所有的資源命名不要使用美元符號等特殊字符源文件組織

6、采用以下順序組織文件:文件頭注釋包、import 語句類和接口的聲明文件頭注釋所有的文件需要有一個C風格的注釋包括 類名,版本信息, 時間, 版權聲明等.示例:/* * (#)Blah.java 1.82 99/03/18 * * Copyright (c) 1994-1999 Sun Microsystems, Inc. * . */ 包、import 語句文件頭注釋后邊空一行, 首先是包聲明, 隨后空一行是import語句, import語句的順序按以下順序(與android.importorder中對應):Android imports第三方庫(com、junit、net、org)jav

7、a和javaxAndroid提供了android.importorder文件,可以導入Eclipse, 隨后使用快捷鍵 Ctrl(Mac下是蘋果鍵)+Shift+O進行排序。在imports使用通配符當你想使用foo包中的Bar類,這有兩種可能的方式導入它:import foo.*;import foo.Bar;1的優(yōu)點 :大大減少了import聲明的數(shù)目。2的優(yōu)點 :很明顯的看到哪些類實際在用,對于維護者而言,代碼更具有可讀性。建議 :使用樣式2 import 所有的Android代碼。一個明確的例外是用于Java標準庫(使用java.util .*,java.io. *,等等)和單元測試代

8、碼(junit.framework .*)。類/接口定義下表按順序給出了類和接口定義的規(guī)范, 類的內(nèi)容按以下順序進行定義類/接口聲明說明類或接口的文檔注釋/*.*/ 類或接口的聲明 類或接口的實現(xiàn)注釋/*.*/在類或接口文檔注釋中不合適出現(xiàn)的內(nèi)容寫在這里靜態(tài)變量1) public 2) protected 3)package level 4) private實例變量順序同上構造方法 方法按照方法的功能而不是訪問權限進行分組,協(xié)作完成某一功能的幾個方法寫在相鄰位置Ps:方法規(guī)模為了把規(guī)??刂圃诤侠矸秶鷥?nèi),方法應該保持簡短和重點突出。不過,有時較長的方法也是合適的,所以對方法的代碼長度并沒有硬性的

9、限制。如果方法代碼超過了40行,就該考慮是否可以在不損害程序結構的前提下進行分拆。在標準的位置定義字段字段應該定義在文件開頭,或者緊挨著使用這些字段的方法之前。除非理由十分充分,否則循環(huán)變量都應該在for語句內(nèi)進行聲明:for (int i = 0; i n; i+)     doSomething(i);排版和斷行Android提供了格式文件android-formatting.xml和android.importorder.可以在Eclipse中導入,使Eclipse自動按照相應的風格進行代碼排版。導入方式:Select Window > Prefere

10、nces > Java > Code Style. Use Formatter > Import to import android-formatting.xml.Organize Imports > Import to import android.importorder.自動排版: shift+ctrl(Mac下為蘋果鍵)+f自動對import排序:shift+Ctrl(Mac下為蘋果鍵)+O行長度每行代碼的長度應該不超過200個字符。縮進每一級縮進采用4個空格字符,不要使用Tab鍵。注: Eclipse可以設置Tab鍵用4個空格字符進行替換: Window(Mac

11、下為Eclipse)->Preferences->General->Editors->Text Editors-> Insert spaces for tabs斷行在逗號后斷行在操作符前斷行有很多操作符則在優(yōu)先級較高的操作符之前斷行新行與前一行相同邏輯層次的表達式對齊如果第四條規(guī)則會導致代碼邏輯混淆或者前一行同一邏輯層次的代碼比較靠右,則可以使用8個空格替代。條件語句(if, while 后邊括號中的條件)采用8個字符的縮進(4個字符的縮進可能會與if之后的執(zhí)行語句造成混淆) 例如:/CONVENTIONAL INDENTATIONsomeMethod(int a

12、nArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) . /INDENT 8 SPACES TO AVOID VERY DEEP INDENTSprivate static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./DON'T USE THIS INDENTATIONif (condition1 &&

13、condition2) | (condition3 && condition4) |!(condition5 && condition6) /BAD WRAPS doSomethingAboutIt(); /MAKE THIS LINE EASY TO MISS /USE THIS INDENTATION INSTEADif (condition1 && condition2) | (condition3 && condition4) |!(condition5 && condition6) doSomething

14、AboutIt();其他1) 大括號: 大括號不單獨占一行,而是與其前面的語句在同一行2) 條件語句之后必須用大括號將該條件需要執(zhí)行的所有語句括起來,即使執(zhí)行語句只有一行,以避免隨后可能對這一段代碼添加語句忘記添加括號的情況出現(xiàn)。(if, for, while)例如:if (condition) dosomething();而不應該if (condition) dosomething();3) 適當?shù)目招校?方法定義之間加空行,方法內(nèi)部邏輯上關聯(lián)不是特別緊密的塊兒之間加空行。例如:void myMethod() int int1 = 0; / beginning of method block

15、 if (condition) int int2 = 0; / beginning of "if" block . 4) 每一個語句單獨占一行(循環(huán)除外) argv+; / Correct argc-; / Correctargv+; argc-; / AVOID!注釋語言建議采用中文注釋,源文件/工程編碼格式設置為utf-8以防止亂碼出現(xiàn)。何時使用注釋有兩種注釋,一種是文檔注釋,另一種是實現(xiàn)注釋。文檔注釋是用來給使用者參考的文檔,可以使用javadoc工具生成html文件,是從實現(xiàn)無關的角度來描述代碼的功能; 實現(xiàn)注釋是為了注釋掉無用的臨時代碼、注釋特殊的代碼實現(xiàn)。所有的

16、注釋是用來給出代碼的概覽,提供代碼外的額外信息的,以利于讀代碼和理解代碼。 而不是重復代碼已經(jīng)能說明的內(nèi)容 ,如果僅僅是重復代碼或者函數(shù)名,則注釋可以不要。例如下邊的例子,注釋不要寫。/Return the widthint getWidth()/注:如果是注釋寫的很長很頻繁通常意味著代碼的設計有問題,在實現(xiàn)過程中,能用代碼說明的就不要寫注釋。TODO注釋當一段代碼是臨時的或者不完美的解決方案時使用TODO注釋。如果TODO注釋的內(nèi)容是:“在將來某天做某事”則指明具體一天或者某個確切的事件(所有測試完畢,即將提交應用)XXX和FIXME注釋XXX: 代碼勉強工作,只是有效率問題FIXME: 代

17、碼不能正常工作,需要修復注解使用標準的Java注解, 每一個注解使用一行。Deprecated:僅當方法不再推薦使用時使用此注解,使用此注解時必須在Javadoc標簽中使用 deprecated 并指定替代的實現(xiàn)。即使這一方法標識為Deprecated,應當仍然可以正確工作。Override : 當方法是覆蓋或者實現(xiàn)父類的方法時使用此標簽*SuppresWarnings: 當且僅當一個警告不能被剔除時才可以并必須使用這個注解,以反映代碼中存在的問題,當這個標簽被使用時,必須有一個 TODO 注釋來解釋警告被剔除的條件。使用這一標簽時,代碼需要被重構以將這一問題與軟件其他部分進行隔離。Javad

18、oc標簽 下面解釋幾個簡單常用的注釋標簽,其他參見: HYPERLINK "標簽說明標簽類型author作者標識包,類,接口version版本號包,類,接口param 參數(shù)名 描述方法的參數(shù)構造方法,方法return 描述對函數(shù)返回值的描述方法deprecated 過期文本標識隨著版本的提示,當前API已經(jīng)過期,僅為保持兼容性依然存在,以此警告開發(fā)者不應再使用這個API包,類,接口,值域,構造方法,方法throws 異常類名構造函數(shù)或者方法所會拋出的異常構造函數(shù),方法see 引用查看相關內(nèi)容,如類、方法、變量等包,類,接口,值域,構造函數(shù),方法since 描述文本API什么版本后開始

19、支持包,類,接口,值域,構造函數(shù),方法link包.類#成員 標簽鏈接到某個特點的成員對應的文檔中包,類,接口,值域,構造函數(shù),方法聲明1) 每行聲明一個變量,在類型和標識符之間用一個空格分隔。2) 盡可能在變量聲明時進行初始化。3) 僅在一個段(大括號對)的開始進行變量初始化(for 循環(huán)初始化除外)4) 不要定義與更廣作用域(類變量)同名的局部變量5) 盡量在變量實際要使用時再進行聲明6) 函數(shù)名和 “(” 之間沒有空格7) “”出現(xiàn)在行尾,“”出現(xiàn)在行首且單獨一行8) 空函數(shù)可以在“”后緊跟“”與函數(shù)在統(tǒng)一行異常處理任何時候不能忽略異常, 如下情況是不允許的:void setServerPort(String value) try serverPort

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論