【敏捷開發】Android團隊開發規範

Leo.cheng發表於2014-03-23

  這裡說的開發規範分成目錄規範,專案和包名的命名規範,類,方法,變數和常量的命名規範這幾種。

目錄規範

  目錄規範——在開發中整體資料夾組織結構。

  1. Requirement——需求文件資料夾
  2. Design——設計文件資料夾
  3. Test——整合測試,系統測試,測試報告,測試清單資料夾
  4. Deployment——釋出部署的資料夾
  5. Study——預研,學習資料的資料夾
  6. Src——原始碼資料夾
  7. Help——幫助文件資料夾

  這麼組織檔案有什麼好處,就是一個專案做完以後,所有的資料就也完成了,結構一目瞭然。

常見的命名方法

  1. 匈牙利命名法:該命名法是在每個變數名的前面加上若干表示資料型別的字元。基本原則是:變數名=屬性+型別+物件描述。如i表示int,所有i開頭的變數命都表示int型別。s表示String,所有變數命以s開頭的都表示String型別變數。
  2. 駱駝命名法:正如它的名稱所表示的那樣,是指混合使用大小寫字母來構成變數和函式的名字。駝峰命名法跟帕斯卡命名法相似,只是首字母為小寫,如userName。因為看上去像駝峰,因此而得名。
  3. 帕斯卡命名法: 即pascal命名法。做法是首字母大寫,如UserName,常用在類的變數命名中。
  4. 下劃線命名法:下劃線法是隨著C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU程式碼中使用非常普遍。

專案和包名命名規範

  對於專案和包名命名規範是

  1. 包名一律小寫少用縮寫和長名;
  2. 採用以下規則:
    • [基本包].[專案名].[模組名]
    • 包名一般不要超過三級,級別多了費腦子
    • 不得將類直接定義在基本包下,所有專案中的類、介面等都應當定義在各自的專案和模組包中;

  例如:

package com.lcw.test.util;

  這樣子的規範,能夠提高專案組織性,從而便於更好的協同開發。

類和介面的命名

  1. 類或介面名是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。
  2. 儘量使你的類名簡潔而富於描述。
  3. 使用完整單詞,避免用縮寫詞(除非該縮寫詞被更廣泛使用,像URLHTML)

  例如:

class Raster;
class ImageSprite;
interface RasterDelegate;
interface Storing;

  命名採用單片語合取名,單詞首字母為大寫,單詞之間可採用“_”下劃線進行區分,也可不採用。

  根據定義型別首字母加以區分:

  1. Interface:命名首字母加大寫的“I;
  2. Abstract class:命名首字母加大寫“A;
  3. Class:無需加

  根據功能型別結尾加上功能描述字串:

  1. 頁面類:“Page”,例如“LoginPage
  2. 處理類:“Handle”,例如“LogicHandle
  3. 工廠實現類:“Impl”,例如“FactoryImpl”
  4. 動作事件定義類:“Action”,例如“LoginAction
  5. 網路事件定義類:“Net”,例如“LoginNet
  6. 資料定義類:“Data”,例如“LoginData
  7. 訊息處理類:“Msg”,例如“LoginRequestMsg
  8. 資源管理類:“Manager”,例如“ImageManager
  9. 快取類:“Cache”,例如“UserCache
  10. 引數傳遞類:“Param”,例如“LoginParam
  11. 功能提供類:“Util”,例如“MathUtil
  12. 資料輸入輸出類:“Steam”,例如“CacheOutStream

  注意事項

  1. 類命名不能使用中文字元,不能在命名字串中出現“0-9”的數值描述和除下劃線以外的其他字元描述,命名的字母組合儘量能夠在本身的文字意義上初步瞭解類的大體功能。
  2. 好的類的命名是,不見註釋見名知意。
  3. 採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫

變數命名方法

  1. 變數名不應以下劃線或美元符號開頭;
  2. 儘量避免單個字元的變數名,除非是一次性的臨時變數。臨時變數通常被取名為ijkmn,它們一般用於整型;cde,它們一般用於字元型
  3. 不建議採用匈牙利命名法則,對不易清楚識別出該變數型別的變數應使用型別名或型別名縮寫作其字尾
  4. 元件或部件變數使用其型別名或型別名縮寫作其字尾
  5. 集合型別變數,例如陣列和向量,應採用複數命名或使用表示該集合的名詞做字尾

  例如

Thread animationThread;
String responseStr;

Command backCommand;
Image barImage;
TextField passwordField;
Player dogSoundPlayer;

Image[] images;
Vector requestQueue;

常量命名

  • 全部採用大寫,單詞間用下劃線隔開
  1. static final int MIN_WIDTH = 4; 
  2. static final int MAX_WIDTH = 999; 
  3. static final int GET_THE_CPU = 1;

方法命名

  1. 方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫;
  2. 取值類可使用get字首,設值類可使用set字首,判斷類可使用is(has)字首。
  3. 對於方法中一定要加上適當的非空判斷,與try catch 語句等等程式健壯性的判斷
getName();
setSarry();
isLogon();

註釋

  1. 註釋,是程式維護的靈魂。
  2. 原則——對已經不推薦使用的類和方法需要註明@Deprecated,並說明替代的類或者方法;
  3. 對於針對集合、開關的方法,要在方法註釋中表明是否多執行緒安全。

檔案註釋

  • 所有的原始檔都應該在開頭有一個註釋,其中列出檔案的版權宣告、檔名、功能描述以及建立、修改記錄
/*
 * 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文件註釋:

  1. 描述Java的類、介面、構造方法、方法、以及欄位。
  2. 每個文件註釋都會被置於註釋定界符/**...*/之中,一個註釋對應一個類、介面或成員。
  3. 該註釋應位於宣告之前
  4. 文件註釋的第一行(/**)不需縮排,隨後的文件註釋每行都縮排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.
 */

  這些命名規範和註釋,看似是微不足道一小步,卻是我們通往專業的一大步

 

相關文章