C語言程式設計規範

2021-03-04 00:48:59 字數 4655 閱讀 9816

編碼規範

1. 標頭檔案編碼規範 3

2. 函式編寫規範 3

3. 識別符號命名與定義 3

3.1通用命名規則 3

3.2 變數命名規則 4

3.3函式命名規則 4

3.4 巨集的命名規則 4

4. 變數 4

5. 巨集、常量 5

6. 質量保證 5

7. 程式效率 6

8. 注釋 6

9. 排版與格式 7

10. 表示式 8

11. **編輯、編譯 8

12. 安全性 8

13. 可讀性 8

14. 可測性 8

15. 單元測試 9

16. 可移植性 9

1. 標頭檔案編碼規範

1. 禁止標頭檔案迴圈依賴。

2. .c/.h檔案不要包含用不到的標頭檔案。

3. 禁止在標頭檔案中定義變數。

4. 同一產品統一包含標頭檔案排列方式。(如功能塊排序、檔名公升序、穩定度排序。)

5. 只能通過包含標頭檔案的方式使用其他.c提供的介面,禁止在.c中通過extern的方式使用外部函式介面、變數。

2. 函式編寫規範

1. 乙個函式僅完成一件功能。

2. 重複**應該盡可能提煉成函式。

3.為簡單功能編寫函式

4.函式的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。

5. 避免函式過長,新增函式不超過100行(非空非注釋行)。

6. 避免函式的**塊巢狀過深,新增函式的**塊巢狀不超過4層。

7. 可重入函式應避免使用全域性變數和禁止使用static變數。

8. 設計高扇入,合理扇出(小於7)的函式。

9. 廢棄**(沒有被呼叫的函式和變數)要及時注釋(有助於更好理解程式)。

10. 對所呼叫函式的錯誤返回碼要仔細、全面地處理。

11. 函式不變引數使用const。

12. 函式應避免使用全域性變數、靜態區域性變數和i/o操作,不可避免的地方應集中使用。

13. 函式的引數個數不超過5個。

14. 減少或禁止函式本身或函式間的遞迴呼叫

3. 識別符號命名與定義

3.1通用命名規則

1. 識別符號的命名要清晰、明了,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解。

2. 除了常見的通用縮寫以外,不使用單詞縮寫,不得使用漢語拼音。

示例:argument 可縮寫為 arg buffer 可縮寫為 buff clock 可縮寫為 clk

***mand 可縮寫為 cmd ***pare 可縮寫為 cmp configuration 可縮寫為 cfg

device 可縮寫為 dev error 可縮寫為 errhexadecimal 可縮寫為 hex

increment 可縮寫為 inc initialize 可縮寫為 init maximum 可縮寫為 max

message 可縮寫為 msg minimum 可縮寫為 min parameter 可縮寫為 para

previous 可縮寫為 prev register 可縮寫為 reg semaphore 可縮寫為 sem

statistic 可縮寫為 stat synchronize 可縮寫為 sync temp 可縮寫為 tmp

3. 產品/專案組內部應保持統一的命名風格。 (unix like和windows like風格)

4. 自己特有的命名風格,要自始至終保持一致,不可來回變化。

5. 命名中若使用特殊約定或縮寫,則要有注釋說明。

6. 用正確的反義詞組命名具有互斥意義的變數或相反動作的函式等。

示例:add/removebegin/endcreate/destroy

insert/deletefirst/lastget/release

increment/decrementput/getadd/delete

lock/unlockopen/closemin/max

old/newstart/stopnext/previous

source/targetshow/hidesend/receive

source/destinationcopy/pasteup/down

7. 盡量避免名字中出現數字編號,除非邏輯上的確需要編號。

8. 平台/驅動等適配**的識別符號命名風格保持和平台/驅動一致。

9. 重構/修改部分**時,應保持和原有**的命名風格一致。

3.2 變數命名規則

1. 全域性變數應增加「g_」字首。

2. 靜態變數應增加「s_」字首。

3. 禁止使用單位元組命名變數,但允許定義i、j、k作為區域性迴圈變數。

4. 使用名詞或者形容詞+名詞方式命名變數。

3.3函式命名規則

1. 函式命名應以函式要執行的動作命名,一般採用動詞或者動詞+名詞的結構

2.函式指標除了字首,其他按照函式的命名規則命名。

3.4 巨集的命名規則

1. 對於數值或者字串等等常量的定義,建議採用全大寫字母,單詞之間加下劃線『_』的方式命名(列舉同樣建議使用此方式定義)。

示例:#define pi_rounded 3.14

2. 除了標頭檔案或編譯開關等特殊標識定義,巨集定義不能使用下劃線『_』開頭和結尾。

4. 變數

1. 乙個變數只有乙個功能,不能把乙個變數用作多種用途。

2. 結構功能單一,不要設計面面俱到的資料結構。

3. 不用或者少用全域性變數。

4. 防止區域性變數與全域性變數同名。

5. 嚴禁使用未經初始化的變數作為右值。

6. 構造僅有乙個模組或函式可以修改、建立,而其餘有關模組或函式只訪問的全域性變數,防止多個不同模組或函式都可以修改、建立同一全域性變數的現象。

7. 在首次使用前初始化變數,初始化的地方離使用的地方越近越好。

8. 明確全域性變數的初始化順序,避免跨模組的初始化依賴。

9. 儘量減少沒有必要的資料型別預設轉換與強制轉換。

5. 巨集、常量

1. 除非必要,應盡可能使用函式代替巨集。

2. 常量建議使用const定義代替巨集。

6. 質量保證

1. **質量保證優先原則

(1)正確性,指程式要實現設計要求的功能。

(2)可靠性,指程式在給定時間間隔和環境條件下,按設計要求成功執行程式的概率。 (3)**可測試性,指軟體發現故障並隔離、定位故障的能力,以及在一定的時間和成本前提下,進行測試設計、測試執行的能力。

(4)簡潔性,指程式易於理解並且易於實現。

(5)可維護性,指程式被修改的能力,包括糾錯、改進、新需求或功能規格變化的適應能力。

(6)可移植性,指為了在原來設計的特定環境之外執行,對系統進行修改的能力。

(7)**效能高效,指是盡可能少地占用系統資源,包括記憶體和執行時間。

(8)個人表達方式/個人方便性,指個人程式設計習慣。

2. 要時刻注意易混淆的操作符。

示例賦值操作符「=」 邏輯操作符「==」

關係操作符「<」 位操作符"<<"

關係操作符「>」 位操作符「>>」

邏輯操作符「||」 位操作符"|"

邏輯操作符「&&」 位操作符"&"

邏輯操作符"!" 位操作符「~」

3. 易用錯的操作符

(1)除操作符"/"

當除操作符「/」的運算量是整型量時,運算結果也是整型。

(2)求餘操作符"%"

求餘操作符"%"的運算量只能是整型。

(3)自加、自減操作符

4. 了解編譯系統的記憶體分配方式,特別是編譯系統對不同型別的變數的記憶體分配規則。

5. 禁止記憶體操作越界。

採用下列措施:

(1)陣列的大小要考慮最大情況,避免陣列分配空間不夠。

3)使用memcpy/memset時一定要確保長度不要越界。

4)字串考慮最後的』\0』, 確保所有字串是以』\0』結束 。

5)指標加減操作時,考慮指標型別長度 。

6)陣列下標進行檢查 。

(7)使用時sizeof或者strlen計算結構/字串長度,避免手工計算。

6. 系統執行之初,要初始化有關變數及執行環境,防止未經初始化的變數被引用。

7. 程式設計時,要防止差1錯誤》=」」<=」)

9. 所有的if ... else if結構應該由else子句結束 ;switch語句必須有default分支。

10. if語句盡量加上else分支,對沒有else分支的語句要小心對待。

11. 不要濫用goto語句。

12. 時刻注意表示式是否會上溢、下溢

7. 程式效率

1. 在保證軟體系統的正確性、簡潔、可維護性、可靠性及可測性的前提下,提高**效率。

2. 通過對資料結構、程式演算法的優化來提高效率。

3.迴圈體內工作量最小化。

4. 對模組中函式的劃分及組織方式進行分析、優化,改進模組中函式的組織結構,提高程式效率。

5. 在多重迴圈中,應將最忙的迴圈放在最內層。

6. 避免或禁止迴圈巢狀。

7. 盡量用乘法或其它方法代替除法,特別是浮點運算中的除法。

C語言程式設計規範

湖南理工學院創新基地 作者彭巍 目錄1 程式的版式 2 1.1 空行 2 1.2 行 3 1.3 空格 3 1.4 長行拆分 4 2 程式的注釋 4 3 命名規則 5 3.1 共性規則 5 3.2 建議的簡單命名規則 6 4 表示式和基本語句 6 4.1 運算子的優先順序 6 4.2 if 語句 7...

C語言程式設計

題目答案知識點評析 填空題請補充函式fun 該函式的功能是 把從主函式中輸入的字串str2接在字串str1的後面。例如 str1 how do str2 you do?結果輸出 how do you do?注意 部分源程式給出如下。請勿改動主函式main和其他函式中的任何內容,僅在函式fun的橫線上...

C 程式設計規範

1.簡介 1 1.1 基本原則 1 1.2 適用範圍 1 1.3 使用常識 1 1.4 參考資料 1 2.組織 2 2.1 專案組織風格 2 2.1.1 專案取名與最終的可執行檔名一致 2 2.1.2 專案目錄設定 2 2.2 整合環境內的專案目錄設定 3 2.3 檔案宣告 3 2.3.1 類宣告與...