編碼規範

 

1.1. 程序塊要採用縮進風格編寫,縮進的空格數3縮進與對齊只使用空格鍵,不應使用Tab鍵
說明:由開發工具自動生成的代碼縮進格式允許不一致。
1.2. 函數或過程的開始、結構的定義及循環、判斷等語句中的代碼都要採用縮進風格,case語句下的情況處理語句也要遵從語句縮進要求。
1.3. 在兩個以上的關鍵字、變量、常量進行對等操作時,它們之間的操作符之前、之後或者前後要加空格;進行非對等操作時,如果是關係密切的立即操作符(如->),後不應加空格。
說明:採用這種鬆散方式編寫代碼的目的是使代碼更加清晰。
 
示例:
(1) 逗號、分號只在後面加空格。
int a, b, c;
 
(2)比較操作符, 賦值操作符"="、 "+=",算術操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、"^"等雙目操作符的前後加空格。
if (current_time >= MAX_TIME_VALUE)
a = b + c;
a *= 2;
a = b ^ 2;
 
(3)"!"、"~"、"++"、"--"、"&"(地址運算符)等單目操作符前後不加空格。
*p = 'a';        // 內容操作"*"與內容之間
flag = !isEmpty; // 非操作"!"與內容之間
p = &mem;        // 地址操作"&" 與內容之間
i++;             // "++","--"與內容之間
 
(4)"->"、"."前後不加空格。
p->id = pid;     // "->"指針前後不加空格
 
(5) if、for、while、switch等與後面的括號間應加空格,使if等關鍵字更爲突出、明顯。
正確寫法:
        if (a < 0)
{
       return;
}
 
        while(a < 0)
{
       a++;
}
錯誤寫法:
        if (a < 0) return;
       
        while(a < 0)
               a++;
 
1.4. 一行程序以小於80字符爲宜,不要寫得過長。
     
2.1. 函數頭部應進行註釋,列出:函數的目的/功能、輸入參數、輸出參數、返回值、調用關係(函數、表)等
使用Doxygen的JavaDoc style來註釋C++代碼,下面是一個典型class的樣例。詳細可以閱讀doxygen_manual-1.6.3.chm。

/**
 * A test class. A more elaborate class description.
 */
class Test
{
 public:
 
    /**
     * An enum.
     * More detailed enum description.
     */
    enum TEnum {
          TVal1, /**< enum value TVal1. */ 
          TVal2, /**< enum value TVal2. */ 
          TVal3 /**< enum value TVal3. */ 
         }
       *enumPtr, /**< enum pointer. Details. */
       enumVar; /**< enum variable. Details. */
      
      /**
       * A constructor.
       * A more elaborate description of the constructor.
       */
      Test();
 
      /**
       * A destructor.
       * A more elaborate description of the destructor.
       */
     ~Test();
   
      /**
       * a normal member taking two arguments and returning an integer value.
       * @param a an integer argument.
       * @param s a constant character pointer.
       * @see Test()
       * @see ~Test()
       * @see testMeToo()
       * @see publicVar()
       * @return The test results
       */
       int testMe(int a,const char *s);
      
      /**
       * A pure virtual member.
       * @see testMe()
       * @param c1 the first argument.
       * @param c2 the second argument.
       */
       virtual void testMeToo(char c1,char c2) = 0;
  
      /**
       * a public variable.
       * Details.
       */
       int publicVar;
      
      /**
       * a function variable.
       * Details.
       */
       int (*handler)(int a,int b);
};
 
 

/**
*
*/
中間的’*’可以省略:
/**
 
*/
 
 
通常的註釋需包括的信息
/*************************************************
 Function:        // 函數名稱
 Description:    // 函數功能、性能等的描述
 Calls:           // 被本函數調用的函數清單
 Called By:       // 調用本函數的函數清單
 Table Accessed: // 被訪問的表(此項僅對於牽扯到數據庫操作的程序)
 Table Updated: // 被修改的表(此項僅對於牽扯到數據庫操作的程序)
 Input:           // 輸入參數說明,包括每個參數的作
                    // 用、取值說明及參數間關係。
 Output:         // 對輸出參數的說明。
 Return:         // 函數返回值的說明
 Others:         // 其它說明
*************************************************/
2.2. 邊寫代碼邊註釋,修改代碼同時修改相應的註釋,以保證註釋與代碼的一致性。不再有用的註釋要刪除。
2.3. 應儘量避免使用全局變量,如果必須使用全局變量,則全局變量要有較詳細的註釋
2.4. 如果你需要不歸檔的註釋,在Doxygen的註釋/***/以外,使用原來的註釋即可:如://…。
3.1. 標識符的命名要清晰、明瞭,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解,避免使用單個字符作爲變量名(如ijk,但ijk作局部循環變量是允許的)
說明:較短的單詞可通過去掉“元音”形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫;一些單詞有大家公認的縮寫。
示例:如下單詞的縮寫能夠被大家基本認可。
temp 可縮寫爲 tmp ;
flag 可縮寫爲 flg ;
statistic 可縮寫爲 stat ;
increment 可縮寫爲 inc ;
message 可縮寫爲 msg ;

類型
前綴
例子
int
i
iVertexNum
bool
b
bVisible
long
l
lHandle
byte
byte
byteFlag
char
c
cInputCharacter
unsigned int
ui
uiStartIndex
short
s
sMehtodID
usigned short
us
usIndex
WORD
w
wIndex
DWORD
dw
dwFlags
 
 
 
 
特殊類型

指針類型
p
pForm
數組類型
a
aNames
靜態變量
s_
s_manager(此時如果是成員變量可以忽略非公有屬性的下劃線前綴規則)
 
字符串類型前綴

 std::string std::wstring
str
strName
 char*
pstr
pstrName
 char[] 數組
sz
szName
 
結構類型

class/struct
無前綴
 
enum
e
ePrimitiveType
 在別人的基礎上修改而成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章