C/C++語言代碼規范


1.標識符名稱:

標識符名稱包括函數名、常量名、變量名等。這些名字應該能反映它所代表的實際東西,具有一定的意義,使其能 夠見名知義,有助於對程序功能的理解。規則如下:

  • 所有宏定義、枚舉常數和const常變量,用大寫字母命名。 #define ARRAY_SIZE 24
  • 復合詞中每個單詞的第一個字母大寫。也可以在復合詞可以用下划線隔開每個詞。SeqList locate_seq
  • typedef定義的類型名用大寫字母表示。
    typedef int INTEGER;

  • 通常,函數的命名也是以能表達函數的動作意義為原則的,一般是由動詞打頭,然后跟上表示動作對象的名詞,各單詞的首學母可以大寫。createNulList_seq

  • 循環變量可采用i,j,k等,不受上述規則限制

  • 對結構體內的變量命名,遵循變量的具體含義命名原則

 

2.數據和函數說明:

  • 數據說明次序應當規范化,使數據屬性容易查找,也有利於測試、排錯和維護。說明的先后次序應固定,應按邏輯功能排序,邏輯功能塊內建議采用下列順序:整型說明、實型說明、字符說明、邏輯量說明。
  • 如果設計了一個復雜的數據結構,應當通過注釋對其變量的含義、用途進行說明

 

3.程序注釋:

  程序注釋是程序員與日后的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數注釋和功能注釋。正規程序的注釋應注意:注釋行的數量占到整個源程序的1/3到1/2

  文件注釋位於整個源程序的最開始部分,注釋后空兩行開始程序正文。它包括:
    ——程序標題。
    ——目的、功能說明。
    ——文件作者、最后修改日期等說明。

 

3.1文件注釋:

例:
/**************************************************************
(空一行)
標題:merglist.c
功能:歸並兩個有序表.
說明:
    歸並兩個數據元素按非遞減有序排列的線性表palist和pblist,求得線性表pclist也具有同樣的特性
當前版本:X.x
修改信息:2004.08.05 Anni,Initial Version
              2004.08.20 Tom,Bug xxxx fixed
**************************來關**********************************/
(空2行,開始程序正文)        

 

3.2函數注釋: 

  函數注釋通常置於每函數或過程的開頭部分,它應當給出函數或過程的整體說明,對於理解程序本身具有引導作用。一般包括如下條目:
    ——模塊標題。
    ——有關本模塊功能和目的的說明。
    ——調用格式
    ——接口說明:包括輸入、輸出、返回值、異常。
    ——算法。如果模塊中采用了一些復雜的算法。

  函數注釋示例:

(注釋開頭與上一函數最后一行間隔兩行)
/***************************************************************
標題:delete_seq
功能:在palist所指順序表中刪除下標為p的元素
格式:int delete_seq(PSeqList palist,intp)
輸入:palist所指順序表,下標p
輸出:palist所指順序表
返回值:TRUE正常,FALSE錯誤
***************************************************************/
(注釋后直接開始程序正文,不空行。)

 

3.3功能性注釋  

  功能性注釋嵌在源程序體中,用於描述其后的語句或程序段做什么工作,也就是解釋下面要做什么,或是執行了下面的語句會怎么樣。而不要解釋下面怎么做,因為解釋怎么做常常與程序本身是重復的。
例:

/*把 amount 加到total中*/
total=amount +total;

  這樣的注釋僅僅是重復了下面的程序,對於理解它的工作並沒有什么作用。而下面的注釋,有助於讀者理解。

/*將每月的銷售額amount加到年銷售額total中*/
材total=amount +total;

  

4.語句結構

 為保證語句結構的清晰和程序的可讀性,在編寫軟件程序時應注意以下幾個方面的問題:

  • 在一行內只寫一條語句,並采用空格、空行和移行保證清楚的視覺效果。
  • 每一個嵌套的函數塊,使用一個TAB縮進(可以設定為4個空格),大括號必須放在條件語句的下一行,單獨成一行,便於匹對:
  • 文件之中不得存在無規則的空行,比如說連續十個空行。

    一般來講函數與函數之間的空行為2-3行;在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。

  • 程序編寫首先應考慮清晰性,不要刻意追求技巧性而使得程序難以理解。
  • 每行長度盡量避免超過屏幕寬度,應不超過80個字符。
  • 除非對效率有特殊要求,編寫程序要作到清晰第一,效率第二。
  • 盡可能使用函數庫。
  • 盡量用公共過程或子程序去代替重復的功能代碼段。
  • 使用括號清晰地表達算術表達式和邏輯表達式的運算順序。如將x=a*b/c*d 寫成x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
  • 避免采用過於復雜的條件測試。
  • 避免過多的循環嵌套和條件嵌套。
  • 建議不要使用*=,A=,/=等運算符。
  • 一個函數不要超過200行。一個文件應避免超過2000行。
  • 盡量避免使用go to語句。
  • 不鼓勵采用?:操作符,如z=(a>b)?a:b;
  • 不要使用空的if else語句。如
    if(mychar >= ‘A’)
    if(mychar <= ‘Z’)
    printf("This is a letter\n");
    else
    printf(“This is not a letter\n");
    

    else到底是否定哪個if容易引起誤解。可通過加{}避免誤解。  

  • 盡量減少使用“否定”條件的條件語句。如:
    把 if(!((mychar<'0’)||(mychar>'9)))
    改為if((mychar>='0)&&(mychar<='9))

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM