【敏捷開發】Android團隊開發規範
這裡說的開發規範分成目錄規範,專案和包名的命名規範,類,方法,變數和常量的命名規範這幾種。
目錄規範
目錄規範——在開發中整體資料夾組織結構。
- Requirement——需求文件資料夾
- Design——設計文件資料夾
- Test——整合測試,系統測試,測試報告,測試清單資料夾
- Deployment——釋出部署的資料夾
- Study——預研,學習資料的資料夾
- Src——原始碼資料夾
- Help——幫助文件資料夾
這麼組織檔案有什麼好處,就是一個專案做完以後,所有的資料就也完成了,結構一目瞭然。
常見的命名方法
-
匈牙利命名法:該命名法是在每個變數名的前面加上若干表示資料型別的字元。基本原則是:變數名=屬性+型別+物件描述
- 駱駝命名法:正如它的名稱所表示的那樣,是指混合使用大小寫字母來構成變數和函式的名字。駝峰命名法跟帕斯卡命名法相似,只是首字母為小寫,如userName。因為看上去像駝峰,因此而得名。
- 帕斯卡命名法: 即pascal命名法。做法是首字母大寫,如UserName,常用在類的變數命名中。
- 下劃線命名法:下劃線法是隨著C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU程式碼中使用非常普遍。
專案和包名命名規範
對於專案和包名命名規範是
- 包名一律小寫, 少用縮寫和長名;
- 採用以下規則:
- [基本包].[專案名].[模組名]
- 包名一般不要超過三級,級別多了費腦子
- 不得將類直接定義在基本包下,所有專案中的類、介面等都應當定義在各自的專案和模組包中;
例如:
package com.lcw.test.util;
這樣子的規範,能夠提高專案組織性,從而便於更好的協同開發。
類和介面的命名
- 類或介面名是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。
- 儘量使你的類名簡潔而富於描述。
- 使用完整單詞,避免用縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML)。
例如:
class Raster; class ImageSprite; interface RasterDelegate; interface Storing;
命名採用單詞組合取名,單詞首字母為大寫,單詞之間可採用“_”下劃線進行區分,也可不採用。
根據定義型別首字母加以區分:
- Interface:命名首字母加大寫的“I”;
- Abstract class:命名首字母加大寫“A”;
- Class:無需加
根據功能型別結尾加上功能描述字串:
- 頁面類:“Page”,例如“LoginPage”
- 處理類:“Handle”,例如“LogicHandle”
- 工廠實現類:“Impl”,例如“FactoryImpl”
- 動作事件定義類:“Action”,例如“LoginAction”
- 網路事件定義類:“Net”,例如“LoginNet”
- 資料定義類:“Data”,例如“LoginData”
- 訊息處理類:“Msg”,例如“LoginRequestMsg”
- 資源管理類:“Manager”,例如“ImageManager”
- 快取類:“Cache”,例如“UserCache”
- 引數傳遞類:“Param”,例如“LoginParam”
- 功能提供類:“Util”,例如“MathUtil”
- 資料輸入輸出類:“Steam”,例如“CacheOutStream”
注意事項
- 類命名不能使用中文字元,不能在命名字串中出現“0-9”的數值描述和除下劃線以外的其他字元描述,命名的字母組合儘量能夠在本身的文字意義上初步瞭解類的大體功能。
- 好的類的命名是,不見註釋見名知意。
- 採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫
變數命名方法
- 變數名不應以下劃線或美元符號開頭;
- 儘量避免單個字元的變數名,除非是一次性的臨時變數。臨時變數通常被取名為i,j,k,m和n,它們一般用於整型;c,d,e,它們一般用於字元型;
- 不建議採用匈牙利命名法則,對不易清楚識別出該變數型別的變數應使用型別名或型別名縮寫作其後綴
- 元件或部件變數使用其型別名或型別名縮寫作其後綴
- 集合型別變數,例如陣列和向量,應採用複數命名或使用表示該集合的名詞做字尾
例如
Thread animationThread;
String responseStr;
Command backCommand;
Image barImage;
TextField passwordField;
Player dogSoundPlayer;
Image[] images;
Vector requestQueue;
常量命名
- 全部採用大寫,單詞間用下劃線隔開
- static final int MIN_WIDTH = 4;
- static final int MAX_WIDTH = 999;
- static final int GET_THE_CPU = 1;
方法命名
- 方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫;
- 取值類可使用get字首,設值類可使用set字首,判斷類可使用is(has)字首。
- 對於方法中一定要加上適當的非空判斷,與try catch 語句等等程式健壯性的判斷
getName();
setSarry();
isLogon();
註釋
- 註釋,是程式維護的靈魂。
- 原則——對已經不推薦使用的類和方法需要註明@Deprecated,並說明替代的類或者方法;
- 對於針對集合、開關的方法,要在方法註釋中表明是否多執行緒安全。
檔案註釋
- 所有的原始檔都應該在開頭有一個註釋,其中列出檔案的版權宣告、檔名、功能描述以及建立、修改記錄
/* * Copyright (C) 2009-2014 liucw Inc.All Rights Reserved. * FileName:HelloWorld.java * @Description:簡要描述本檔案的內容 * History: * 版本號 作者 日期 簡要介紹相關操作 * 1.0 liucw 2014-03-21 Create * 1.1 liucw 2014-03-23 Add Hello World */
類或介面註釋
- 採用JavaDoc文件註釋,在類、介面定義之前應當對其進行註釋,包括類、介面的描述、最新修改者、版本號、參考連結等
/** * 描述 * @author liucw(最新修改者) * @version 1.0 (最新版本號) * @see 參考的JavaDoc */ class Window extends BaseWindow { ... }
JavaDoc文件註釋:
- 描述Java的類、介面、構造方法、方法、以及欄位。
- 每個文件註釋都會被置於註釋定界符/**...*/之中,一個註釋對應一個類、介面或成員。
- 該註釋應位於宣告之前。
- 文件註釋的第一行(/**)不需縮排,隨後的文件註釋每行都縮排1格(使星號縱向對齊)。
方法註釋
- 採用JavaDoc文件註釋,在方法定義之前當對其進行註釋,包括方法的描述、輸入、輸出及返回值說明、丟擲異常說明、參考連結等
/** * @author liucw * @Description: ${todo} * @date ${date} ${time} * @param 引數說明:每個引數一行,註明其取值範圍等 * @return 返回值:註釋出失敗、錯誤、異常時的返回情況 * @exception 異常:註釋出什麼條件下會引發什麼樣的異常 * @see 參考的JavaDoc */ public char charAt(int index) { ... }
其它註釋(非JavaDoc文件註釋)
- 單行程式碼註釋一律使用註釋界定符"//"
// explain what this means if(bar > 1) { …… } int isShow = 0;// 是否顯示
- 多行註釋使用註釋界定符"/*...*/"
/* * Here is a block comment with * multiple lines for text comments. */
這些命名規範和註釋,看似是微不足道一小步,卻是我們通往專業的一大步
相關推薦
【敏捷開發】Android團隊開發規範
這裡說的開發規範分成目錄規範,專案和包名的命名規範,類,方法,變數和常量的命名規範這幾種。 目錄規範 目錄規範——在開發中整體資料夾組織結構。 Requirement——需求文件資料夾 Design——設計文件資料夾 Test——整合測試,系統測試,測試報告,測試清單資料夾 Deplo
【入門篇】ANDROID開發之BUG專講
world 自然 執行 類型 效率 str 積累 全部 href 話說諸葛亮是一個優秀的程序員,每個錦囊都是應對不同的case而編寫的。可是優秀的程序員也敵只是更優秀的bug。六出祈山。七進中原,鞠躬盡瘁,死而後已的諸葛亮僅僅由於有一
【音視頻】Android CallLib 開發指南
SDK 音視頻 開通方式音視頻服務開通,請參考音視頻開通方式說明。使用說明由於底層引擎技術不同,2.6.0 之後的音視頻 SDK 與 2.6.0 之前的 SDK 中的實時音視頻不能互通。音視頻 SDK 為商用收費功能,之前的 SDK 中的實時音視頻為免費測試功能,如果您還想使用之前的實時音視頻,可以使
【安全開發】Perl安全編碼規範
多年以來,Perl已經成為用於系統管理和WebCGI開發的功能最強的程式語言之一(幾乎可以使用Perl做任何功能的程式)。但其擴充套件應用,即作為Internet上CGI的開發工具,使得它經常成為Web伺服器上的攻擊目標。 另外,大多數CGI指令碼有著比一般使用者更高的許可權,導致它更容易受攻擊。下面列舉了
【Android應用開發】Android Studio
作者 : 韓曙亮要點總結 : -- 熟練使用快捷鍵 : 在任何程式設計環境中, 熟練使用環境提供的快捷鍵會大大提高程式設計效率, 在 Android Studio 中也不例外, 熟練使用其快捷鍵是 An
【Android開發】Android 刪除指定檔案和資料夾
/** * 刪除單個檔案 * @param filePath 被刪除檔案的檔名 * @return 檔案刪除成功返回true,否則返回false */ public boolean deleteFile(String filePath) {
【Android 開發】: Android客戶端與服務端之間使用JSON互動資料。
在前面的兩講中,我們講解了JSON資料格式的一些基本知識,以及做一些小Demo,這一講我們在前面的基礎上來做一個綜合的可擴充套件的Demo,主要是針對Android客戶端解析服務端傳遞過來的JSON資料。整個Demo所作的操作如下圖所示 1. 服務端 服務端
【Android 開發】: Android 訊息處理機制之四: Android 訊息迴圈 Looper 及其原始碼解析
上一講我們學習Handler和Message的一些使用方式,我們知道Handler它會發送訊息和處理訊息,並且關聯一個子執行緒,如何傳送訊息入隊和出隊處理訊息等這些都是交給Looper去管理分發的,也就是它是負責整個訊息佇列運轉的一個類,這一講我們就來學習一下Andr
【Android Studio開發】Android Studio如何獲取versionname和versioncode
在eclipse中我們很清楚可以用下面的程式碼獲取到versionname和versionname //eclipse獲取versioncode和versioncode public void getEclipseVersionInfo(){ int versio
【Android 開發】: Android 訊息處理機制之三: Handler 中 sendMessage() 原始碼剖析
閱讀此文,請先閱讀以下相關連線: sendMessage()的幾種過載方法的使用方式的不同以及它們的原始碼的剖析. 通過前面幾講的內容,我們知道Android不但可以使用非同步任務處理多執行
【 專欄 】- Android系統開發和架構研究
Android系統開發和架構研究 在這個專欄,我會分享Android系統開發實踐中的心得體會,對系統架構實現演變的理解, 特別是Android framework,native 和 kernel的相關研究。我也會收集我看到他人的優
【 專欄 】- Android Studio開發必備技巧
Android Studio開發必備技巧 在Android開發中最好用的開發工具莫過於Android Studio,俗話說工欲善其事,必先利其器。所以掌握好Android Studio對開發來說尤為重要,本專欄主要介紹,在平時的A
【Android 開發】: Android 訊息處理機制之一: Handler 與 Message
最近幾講內容,我們學習了Android中關於多執行緒的一些知識,上一講我們講解了非同步任務 AsyncTask 的操作,Android中還提供了其他的執行緒操作,如Handler Message MessageQueue Looper 等模組,這些就是Android
【追夢小樂的部落格】android工作開發經驗集_android基礎知識學習筆記集_反編譯教程收集
讀《瘋狂Android講義 第三版》筆記 本欄目會收集閱讀《瘋狂Android講義 》 的一些筆記,俗話說:好記性不如爛筆頭!更何況是我這種剛進入android程式設計界的初級小白,我要不斷堅持寫筆記,向中高階進軍
【Android 開發】: Android客戶端與服務端之間使用GSON互動資料。
前面我們有提到google的Gson技術的介紹[GSON 資料格式詳解],這一講我們來詳細學習一下Android客戶端與服務端之間使用GSON進行JSON資料的解析,關於GSON的技術我們已經在前面兩講中提到過,對GSON不瞭解的讀者可以先去看前面兩講的博文,這一講
【 專欄 】- Android元件開發
Android元件開發 詳細的講解了android的相應元件應用,其中包括Activities(活動)Service(服務)Content(內容)Intent(意圖)BroadcastReceiver(廣播)等,從不同方面使讀者更
【開源框架】Android之史上最全最簡單最有用的第三方開源庫收集整理,有助於快速開發,歡迎各位網友補充完善
Android開源庫 自己一直很喜歡Android開發,就如部落格簽名一樣, 我是程式猿,我為自己代言 。 在摸索過程中,GitHub上搜集了很多很棒的Android第三方庫,推薦給在苦苦尋找的開發者,而且我會 不定期的更新 這篇文章。 Android下的優秀
【Android開發】Android跨程序通訊(AIDL)官方文件及官方Demo講解
第一章、 關於Android跨程序的思考 先來回顧一下作業系統中的一些概念。 同一個程序中可以有多個執行緒,執行緒間通訊可以直接取得地址。因為Java程式的記憶體分配在連續的地址空間。 預設一個Java程式會開啟一個程序,執行在JVM中。但
【Android 應用開發】Android
總結了Android中常用的按鈕用法示例原始碼下載地址 :-- GitHub : https://github.com/han1202012/Button_Test.git.作者 :萬境絕塵 .一. B
[轉]【開源框架】Android之史上最全最簡單最有用的第三方開源庫收集整理,有助於快速開發
原文地址:http://www.tuicool.com/articles/jyA3MrU Android開源庫 自己一直很喜歡Android開發,就如部落格簽名一樣, 我是程式猿,我為自己代言 。 在摸索過程中,GitHub上搜集了很多很棒的Android第三方庫