C++代碼規范


為了防止頭文件被重復引用,應當用ifndef / define /endif結構產生預處理塊
類的成員函數聲明與定義分開,不論函數體大小
不提倡使用全局變量,盡量不要在頭文件中出現像extern int value 這類聲明
變量一般不要定義在 .h 頭文件中,可以只是聲明

頭文件的作用: 1.通過頭文件來調用庫功能,用戶只要按照頭文件中的接口聲明來調用庫功能,而不必關心接口怎么實現,編譯器會從庫中提取相應的代碼。
2.頭文件能加強類型的安全檢查

空行

在每個類聲明后,每個函數定義結束后都要加空行。

在一個函數體內,邏輯上密切相關的語句不加空行,其他地方應加空行分隔

代碼行

一行代碼只做一件事情,只定義一個變量或只寫一條語句,便於閱讀和寫注釋

循環語句自占一行,不論執行語句有多少,都要加花括號

盡可能在定義變量的同時初始化變量,變量的初始化很容易被忘記

代碼行內的空格

關鍵字之后要留空格,以突出關鍵字

函數之后不要留空格,以與關鍵字區別

分號,逗號后都要留空格

對於表達式較長的for 和if 語句,為緊湊起見,可以去掉一些空格

長行拆分

代碼不要太長,長表達式要在低優先級操作符處拆分成新行,操作符放在新行之首,注釋是對代碼的提示,而不是文檔

注釋位置應與被描述的位置相鄰,在代碼上方或右方,不可在下方

當代碼較長,特別是有多重嵌套時,應當在一些段落的結束處加注釋,便於閱讀

類的版式

類的版式:類可以將數據和函數封裝在一起,函數表示類提供的服務。書寫時,public類函數寫前面,主張以行為為中心,首先考慮類應提供什么樣的服務。

命名規則

標識符應當直觀,望文生義

長度應當符合:min-length && max-information

命名規則盡量與所用的操作系統或開發工具風格保存一致,windows中采用大小寫混排的方式,unix采用小寫加下划線的組合

程序中不要出現僅靠大小寫區分的相似標識符

程序中盡量不要出現標識符完全相同的局部變量和全局變量,盡管兩者的作用域不同,並不會發生語法錯誤,但會使人誤解

**變量的名字應當使用 “名詞” 或者 “形容詞+名詞" **

全局函數的名字應當使用 "動詞” 或者 “動詞+名詞”,類的成員函數應當只使用動詞,被省略掉的名詞就是對象本身

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

盡量避免名字中出現名字編號,除非邏輯上的確需要編號,這是為了防止程序員偷懶,不肯為命名動腦筋而導致產生無意義的名字

簡單的Windows命名規則

類名和函數名用大寫字母開頭的單詞組合而成

變量和參數用小寫字母開頭的單詞組合而成

常量全用大寫的字母,用下划線分割單詞

靜態變量加前綴 s_(表示static)

如果不得已需要全局變量,則全局變量加前綴g_ (表示global)

類的數據成員加前綴m_(表示member),這樣可以避免數據成員與成員函數的參數同名

運算符的優先級:為了防止產生歧義並提高可讀性,應當用括號確定表達式的操作順序。

應當將整形變量用==或!=直接與0比較

不可將浮點變量用或!=與任何數字比較,千萬要留意,無論時float還是double類型的變量,都有精度限制,輸入0.0可能實際是0.0000001,一定要避免將浮點變量用或!=與數字比較,應該設法轉化成>=或<=形式

指針變量與0值比較:應當將指針變量用或!=與NULL比較,指針變量的零值是空(記為NULL),盡管NULL的值與0相同,但是兩者意義不同,p與NULL顯示比較,強調p是指針變量
有時候會看到if(NULL
p),是程序員為了防止將if(p==NULL)寫成if(p=NULL),而有意把p和NULL顛倒。NULL不能被賦值,編譯器會報錯。

提高循環體效率的基本辦法是降低循環體的復雜性:
在多重循環中,如果有可能,應當將最長的循環放在最內層,最短的循環放在最外層,減少CPU跨切循環層的次數

如果循環體內存在邏輯判斷,並且循環次數很大,先將邏輯判斷移到循環體外面。

4-4(c)的程序比示例 4-4(d)多執行了 N-1 次邏輯判斷。並且由 於前者老要進行邏輯判斷,打斷了循環“流水線”作業,使得編譯器不能對循環進 行優化處理,降低了效率。如果 N 非常大,好采用示例 4-4(d)的寫法,可以提高 效率。如果 N 非常小,兩者效率差別並不明顯,采用示例 4-4(c)的寫法比較好,因 為程序更加簡潔。


免責聲明!

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



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