已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Android 編碼規(guī)范 介紹介紹 1 為什么需要編碼規(guī)范為什么需要編碼規(guī)范 編碼規(guī)范對于程序員而言尤為重要 有以下幾個原因 一個軟件的生命周期中 80 的花費在于維護 幾乎沒有任何一個軟件 在其整個生命周期中 均由最初的開發(fā)人員來維護 編碼規(guī)范可以改善軟件的可讀性 可以讓程序員盡快而徹底地理解新的代碼 如果你將源碼作為產品發(fā)布 就需要確任它是否被很好的打包并且清晰無誤 一如你 已構建的其它任何產品 10 個工程師寫的代碼會看起來一個人寫的代碼 維護階段一目了然清晰 可以節(jié)省不少時間去熟悉看懂代碼等等 命名命名 2 包命名包命名 命名規(guī)則 一個唯一包名的前綴總是全部小寫的 ASCII 字母并且是一個頂級域名 通 常是 com edu gov mil net org 包名的后續(xù)部分根據(jù)不同機構各自內部的命名 規(guī)范而不盡相同 這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門 department 項目 project 機器 machine 或注冊名 login names 例如 com hymobile nloc activities 規(guī)約 包命名必須以規(guī)約 包命名必須以 com hymobilecom hymobile 開始 后面跟有項目名稱 或者縮寫 開始 后面跟有項目名稱 或者縮寫 再后面為再后面為 模塊名或層級名稱 模塊名或層級名稱 如 com hymobile 項目縮寫 模塊名 com hymobile nloc bookmark 如 com hymobile 項目縮寫 層級名 com hymobile nloc activities 3 類和接口類和接口 命名命名 命名規(guī)則 類名是個一名詞 采用大小寫混合的方式 每個單詞的首字母大寫 盡量 使你的類名簡潔而富于描述 使用完整單詞 避免縮寫詞 除非該縮寫詞被更廣泛使用 像 URL HTML 接口一般要使用 able ible er 等后綴 例如 class Raster class ImageSprite 規(guī)約 類名必須使用駝峰規(guī)則 即首字母必須大寫 如果為詞組 則每個單詞的首字規(guī)約 類名必須使用駝峰規(guī)則 即首字母必須大寫 如果為詞組 則每個單詞的首字 母也必須要大寫 類名必須使用名詞 或名詞詞組 要求類名簡單 不允許出現(xiàn)無意母也必須要大寫 類名必須使用名詞 或名詞詞組 要求類名簡單 不允許出現(xiàn)無意 義的單詞 義的單詞 如如 classclass XXXActivityXXXActivity 如 class BookMarkAdd 正確 如 class AddBookReadPlanActivity 錯誤 錯誤 應為 class BookReadPlanAdd 4 方法的命名方法的命名 命名規(guī)則 方法名是一個動詞 采用大小寫混合的方式 第一個單詞的首字母小寫 其后單詞的首字母大寫 例如 public void run public String getBookName 類中常用方法的命名 1 類的獲取方法 一般具有返回值 一般要求在被訪問的字段名前加上 get 如 getFirstName getLastName 一般來說 get 前綴方法返回的是單個值 find 前綴的方法返回的是列表值 2 類的設置方法 一般返回類型為 void 被訪問字段名的前面加上前綴 set 如 setFirstName setLastName 3 類的布爾型的判斷方法一般要求方法名使用單詞 is 或 has 做前綴 如 isPersistent isString 或者使用具有邏輯意義的單詞 例如 equal 或 equals 4 類的普通方法一般采用完整的英文描述說明成員方法功能 第一個單詞盡可能采 用動詞 首字母小寫 如 openFile addCount 5 構造方法應該用遞增的方式寫 參數(shù)多的寫在后面 6 toString 方法 一般情況下 每個類都應該定義 toString 其格式為 5 變量命名變量命名 命名規(guī)則 第一個單詞的首字母小寫 其后單詞的首字母大寫 變量名不應以下劃線 或美元符號開頭 盡管這在語法上是允許的 變量名應簡短且富于描述 變量名的選 用應該易于記憶 即 能夠指出其用途 盡量避免單個字符的變量名 除非是一次性 的臨時變量 臨時變量通常被取名為 i j k m 和 n 它們一般用于整型 c d e 它們一般用于字符型 例如 String bookName 規(guī)約 變量命名也必須使用駝峰規(guī)則 但是首字母必須小寫 變量名盡可能的使用名規(guī)約 變量命名也必須使用駝峰規(guī)則 但是首字母必須小寫 變量名盡可能的使用名 詞或名詞詞組 同樣要求簡單易懂 不允許出現(xiàn)無意義的單詞 詞或名詞詞組 同樣要求簡單易懂 不允許出現(xiàn)無意義的單詞 如 String bookName 正確 如 String bookNameString 錯誤 6 成員變量命名成員變量命名 同變量命名 但不要在私有變量前添加 m 字樣 7 常量命名常量命名 命名規(guī)則 類常量的聲明 應該全部大寫 單詞間用下劃線隔開 例如 static final int MIN WIDTH 4 例如 static final int MAX WIDTH 999 例如 static final int GET THE CPU 1 8 異常命名異常命名 自定義異常的命名必須以必須以 ExceptionException 為結尾為結尾 已明確標示為一個異常 9 layout 命名命名 規(guī)約 規(guī)約 layoutlayout xmlxml 的命名必須以的命名必須以 全部單詞小寫 單詞間以下劃線分割 并且使用名全部單詞小寫 單詞間以下劃線分割 并且使用名 詞或名詞詞組 即使用詞或名詞詞組 即使用 模塊名模塊名 功能名稱功能名稱 來命名 來命名 如 knowledge gained main xml 正確 如 list book xml 錯誤 10 id 命名命名 規(guī)約 規(guī)約 layoutlayout 中所使用的中所使用的 idid 必須以全部單詞小寫 單詞間以下劃線分割 并且使用必須以全部單詞小寫 單詞間以下劃線分割 并且使用 名詞或名詞詞組 并且要求能夠通過名詞或名詞詞組 并且要求能夠通過 idid 直接理解當前組件要實現(xiàn)的功能 直接理解當前組件要實現(xiàn)的功能 如 某 TextView id textbookname 錯誤 應為 id book name show 如 某 EditText id textbookname 錯誤 應為 id book name edit 11 資源命名資源命名 規(guī)約 規(guī)約 layoutlayout 中所使用的所有資源 如中所使用的所有資源 如 drawable styledrawable style 等 命名必須以全部單詞小等 命名必須以全部單詞小 寫 單詞間以下劃線分割 并且盡可能的使用名詞或名詞組 即使用寫 單詞間以下劃線分割 并且盡可能的使用名詞或名詞組 即使用 模塊名模塊名 用途用途 來來 命名 如果為公共資源 如分割線等 則直接用用途來命名命名 如果為公共資源 如分割線等 則直接用用途來命名 如 menu icon navigate png 正確 如 某分割線 line png 或 separator png 正確 12 activityactivity命名命名 activityactivity 中的中的 viewview 變量命名命名模式為 變量命名命名模式為 邏輯名稱邏輯名稱 view view 縮寫建議縮寫建議 如果如果 layoutlayout 文件很復雜 建議將文件很復雜 建議將 layoutlayout 分成多個模塊 每個模塊定義一個分成多個模塊 每個模塊定義一個 moduleViewHoldermoduleViewHolder 其成員變量包含所屬 其成員變量包含所屬 viewview 13 activityactivity命名命名 strings xmlstrings xml 中的中的 idid 命名命名模式 命名命名模式 activityactivity 名稱名稱 功能模塊名稱功能模塊名稱 邏輯名稱 邏輯名稱 activityactivity 名稱名稱 邏輯名稱 邏輯名稱 common common 邏輯邏輯 名稱名稱 strings xmlstrings xml 中 使用中 使用 activityactivity 名稱注釋 將文件內容區(qū)分開來名稱注釋 將文件內容區(qū)分開來 注釋注釋 Java 程序有兩類注釋 實現(xiàn)注釋 implementation comments 和文檔注釋 document comments 實現(xiàn)注釋是使用 和 界定的注釋 文檔注釋 被稱為 doc comments 由 界定 文檔注釋可以通過 javadoc 工具轉換成 HTML 文件 注釋功能描述內容在注釋功能描述內容在 3030 字以內 字以內 1 文件注釋文件注釋 所有的源文件都應該在開頭有一個注釋 其中列出類名 版本信息 日期和版權聲明 如下 文件名 包含類名列表 版本信息 版本號 創(chuàng)建日期 版權聲明 2 類注釋類注釋 每一個類都要包含如下格式的注釋 以說明當前類的功能等 類名 author 作者 實現(xiàn)的主要功能 創(chuàng)建日期 修改者 修改日期 修改內容 3 方法注釋方法注釋 每一個方法都要包含 如下格式的注釋 包括當前方法的用途 當前方法參數(shù)的含義 當前方法返回值的內容和拋出異常的列表 方法的一句話概述 方法詳述 簡單方法可不必詳述 param param s 說明參數(shù)含義 return return 說明返回值含義 throws throws IOException 說明發(fā)生此異常的條件 throws throws NullPointerException 說明發(fā)生此異常的條件 4 類成員變量和常量注釋類成員變量和常量注釋 成員變量和常量需要使用 java doc 形式的注釋 以說明當前變量或常量的含義 為了以后方便生成 javadoc 文檔 XXXX含義 5 其他注釋其他注釋 方法內部的注釋 如果需要多行 使用 形式 如果為單行是用 形式的注 釋 不要再方法內部使用 java doc 形式的注釋 簡單的區(qū)分方法是 java doc 形式的注釋在 eclipse 中為藍色 普通注釋為綠色 6 XML 注釋注釋 規(guī)約 如果當前 layout 或資源需要被多處調用 或為公共使用的 layout 若 list item 則需要在 xml 寫明注釋 要求注釋清晰易懂 代碼風格代碼風格 1 縮進縮進 規(guī)約 不允許使用 Tab 進行縮進 使用空格進行縮進 推薦縮進為 2 空格 2 空行空行 空行將邏輯相關的代碼段分隔開 以提高可讀性 下列情況應該總是使用空行 一個源文件的兩個片段 section 之間 類聲明和接口聲明之間 兩個方法之間 方法內的局部變量和方法的第一條語句之間 一個方法內的兩個邏輯段之間 用以提高可讀性 一個臨時或不確定方法使用 TODO 注釋并說明 規(guī)約 通常在 變量聲明區(qū)域之后要用空行分隔 常量聲明區(qū)域之后要有空行 分隔 方法聲明之前要有空行分隔 3 行寬行寬 無特別規(guī)定 因為現(xiàn)在的顯示器都比較大 所以推薦使用 120 進行設置 規(guī)約規(guī)約 1 方法方法 一個方法盡量不要超過 15 行 如果方法太長 說明當前方法業(yè)務邏輯已經非常復雜 那么就需要進行方法拆分 保證每個方法只作一件事 不要使用 try catch 處理業(yè)務邏輯 2 參數(shù)和返回值參數(shù)和返回值 一個方法的參數(shù)盡可能的不要超過 4 個 如果一個方法返回的是一個錯誤碼 請加 try 異常處理 盡可能不要使用 null 替代為異常 或者使用空變量 如返回 List 則可以使用 Collections emptyList 3 神秘的數(shù)神秘的數(shù) 代碼中不允許出現(xiàn)單獨的數(shù)字 字符 如果需要使用數(shù)字或字符 則將它們按照含義封裝 為靜態(tài)常量 for 語句中除外 4 控制語句控制語句 判斷中如有常量 則應將常量置于判斷式的右側 如 if true isAdmin 盡量不使用三目條件的嵌套 所有 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 0 x x 21 種代碼的壞味道種代碼的壞味道 應該在編程中盡量避免這 21 種 壞味道 1 Duplicated Code 代碼重復幾乎是最常見的異味了 他也是 Refactoring 的主要目標之一 代碼重復往 往來自于 copy and paste 的編程風格 2 Long method 它是傳統(tǒng)結構化的 遺毒 一個方法應當具有自我獨立的意圖 不要把幾個意圖 放在一起 3 Large Class 大類就是你把太多的責任交給了一個類 這里的規(guī)則是 One Class One Responsibility 4 Divergent Change 一個類里面的內容變化率不同 某些狀態(tài)一個小時變一次 某些則幾個月一年才變一次 某些狀態(tài)因為這方面的原因發(fā)生變化 而另一些則因為其他方面的原因變一次 面向對象 的抽象就是把相對不變的和相對變化相隔離 把問題變化的一方面和另一方面相隔離 這 使得這些相對不變的可以重用 問題變化的每個方面都可以單獨重用 這種相異變化的共 存使得重用非常困難 5 Shotgun Surgery 這正好和上面相反 對系統(tǒng)一個地方的改變涉及到其他許多地方的相關改變 這些變化率 和變化內容相似的狀態(tài)和行為通常應當放在同一個類中 6 Feature Envy 對象的目的就是封裝狀態(tài)以及與這些狀態(tài)緊密相關的行為 如果一個類的方法頻繁用 get 方法存取其他類的狀態(tài)進行計算 那么你要考慮把行為移到涉及狀態(tài)數(shù)目最多的那個類 7 Data Clumps 某些數(shù)據(jù)通常像孩子一樣成群玩耍 一起出現(xiàn)在很多類的成員變量中 一起出現(xiàn)在許多方 法的參數(shù)中 這些數(shù)據(jù)或許應該自己獨立形成對象 8 Primitive Obsession 面向對象的新手通常習慣使用幾個原始類型的數(shù)據(jù)來表示一個概念 譬如對于范圍 他們 會使用兩個數(shù)字 對于 Money 他們會用一個浮點數(shù)來表示 因為你沒有使用對象來表達 問題中存在的概念 這使得代碼變的難以理解 解決問題的難度大大增加 好的習慣是擴 充語言所能提供原始類型 用小對象來表示范圍 金額 轉化率 郵政編碼等等 9 Switch Statement 基于常量的開關語句是 OO 的大敵 你應當把他變?yōu)樽宇?state 或 strategy 10 Parallel Inheritance Hierarchies 并行的繼承層次是 shotgun surgery 的特殊情況 因為當你改變一個層次中的某一個類時 你必須同時改變另外一個層次的并行子類 11 Lazy Class 一個干活不多的類 類的維護需要額外的開銷 如果一個類承擔了太少的責任 應當消除 它 12 Speculative Generality 一個類實現(xiàn)了從未用到的功能和通用性 通常這樣的類或方法唯一的用戶是 testcase 不 要猶豫 刪除它 13 Temporary Field 一個對象的屬性可能只在某些情況下才有意義 這樣的代碼將難以理解 專門建立一個對 象來持有這樣的孤兒屬性 把只和他相關的行為移到該類 最常見的是一個特定的算法需 要某些只有該算法才有用的變量 14 Message Chain 消息鏈發(fā)生于當一個客戶向一個對象要求另一個對象 然后客戶又向這另一對象要求另一 個對象 再向這另一個對象要求另一個對象 如此如此 這時 你需要隱藏分派 15 Middle Man 對象的基本特性之一就是封裝 而你經常會通過分派去實現(xiàn)封裝 但是這一步不能走得太 遠 如果你發(fā)現(xiàn)一個類接口的一大半方法都在做分派 你可能需要移去這個中間人 16 Inappropriate Intimacy 某些類相互之間太親密 它們花費了太多的時間去磚研別人的私有部分 對人類而言 我 們也許不應該太假正經 但我們應當讓自己的類嚴格遵守禁欲主義 17 Alternative Classes with Different Interfaces 做相同事情的方法有不同的函數(shù) signature 一致把它們往類層次上移 直至協(xié)議一致 18 Incomplete L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版申通快遞快遞運輸服務協(xié)議范本3篇
- 二零二五年度寵物領養(yǎng)服務合同標準范本2篇
- 紡織行業(yè)紡織培訓
- 二零二五版國際貨運代理業(yè)投資監(jiān)管細則3篇
- 酒店管理的管理技能
- 二零二五年度物流倉儲行業(yè)搬運工勞務派遣服務協(xié)議3篇
- 二零二五年度個人與企業(yè)個人間文化藝術交流活動合同規(guī)范3篇
- 二零二五年度跨境電商品牌授權區(qū)域代理銷售委托代銷合同3篇
- 二零二五年度個人教育培訓貸款合同模板2篇
- 二零二五年度入學新生教育法律協(xié)議書(全面創(chuàng)新發(fā)展)3篇
- 致命性大出血急救專家共識
- 住院成人高血糖患者血糖監(jiān)測醫(yī)護協(xié)議處方共識
- DL-T5816-2020分布式電化學儲能系統(tǒng)接入配電網設計規(guī)范
- 2024年4月自考00832英語詞匯學試題
- 競賽試卷(試題)-2023-2024學年六年級下冊數(shù)學人教版
- 《電力用直流電源系統(tǒng)蓄電池組遠程充放電技術規(guī)范》
- T-ACEF 095-2023 揮發(fā)性有機物泄漏檢測紅外成像儀(OGI)技術要求及監(jiān)測規(guī)范
- 骨科手術的術后飲食和營養(yǎng)指導
- 旅游定制師入行培訓方案
- 2024年中國南方航空股份有限公司招聘筆試參考題庫含答案解析
- 六年級上冊數(shù)學應用題100題
評論
0/150
提交評論