c/c++
程式設計規範
精述(匈牙利命名法)
1、排版上不同小結構間要空行分開,子邏輯項相對父邏輯項要縮排;{及if,
while
等判斷語句應獨佔行並對齊,且後加空格以顯突出。
2、注釋位於相應**上面或右旁邊。且與其它**空行或空格隔開。
3、變數命名風格:採用
unix
的全小寫加下劃線的風格或大小寫混排的方式,不要使用大小寫與下劃線混排的方式,但用作特殊標識如標識成員變數或全域性變數的m_和
g_,其後加上大小寫混排的方式是允許的。
定義識別符號(變數名/
函式名)應體現
code is document
:型別的第乙個字母小寫組合
+ 有意義的單詞。全域性變數和函式名前應加模組名。
如dword dwsum = 0;
定義變數應當初始化,尤其是在使用前。
全域性變數/
靜態變數要注意可重入性(經過處理才可以)。結構定義應當盡是以
4位元組(32位
cpu乙個指令就可以訪問)對齊的。
typedef
結構體時,不應當只定義指標。
注意一下巨集定義:#define mpplnx_dump_read_write_cdb(x) ...
注:可重入性是指函式可以被多個任務程序呼叫;乙個可重入的函式簡單來說就是可以被中斷的函式,也就是可以在這個函式執行的任何時刻中斷它,os
排程轉入去執行另外一段**,而返回控制時不會出現錯誤;而不可重入的函式由於使用了一些系統資源,比如全域性變數區,中斷向量表等,所以它如果被中斷的話,可能會出現問題。
滿足下列條件的函式多數是不可重入的:
1) 函式體內使用了靜態的資料結構;
2) 函式體內呼叫了
malloc()
或者free()
函式;3) 函式體內呼叫了標準
i/o函式。
4、語句結構上,涉及有意義的常量,應當用列舉或巨集來代替;常量放在變數的左邊;用小括號來體現優先順序。
<<
等邏輯關鍵字前後加空格。函式功能應當單一。
輸入引數的合法性檢查:
1)外部模組或者使用者輸入的引數;
2)從物理鏈路上接收到的資料。
5、可測性上,**自始至終只有乙份,不存在開發版本和測試版本;測試與最終發行的版本是通過編譯開關的不同來實現,編譯開關要規範統一。
使用斷言來發現軟體問題;注意:在release
版本下,
assert
被定義成空操作(不執行),所以如下寫法是不對的:
assert(e1t1_ok == e1t1_setdefaultframingmode());
6、程式效率上,迴圈體內工作量最小化,被訊號量保護的區域應該盡可能小。
7、質量上,記憶體分配上,一般秉承誰申請,誰釋放,也樣:檔案控制代碼;尤其是有異常退出的地方。記憶體釋放後,一定要把指標置為
null
。記憶體越界問題。
unix下,多執行緒的中的子執行緒退出必需採用主動退出方式,即子執行緒應
return
出口。不要濫用不等於禁止使用。goto
使用的注意事項:
• single entry, single exit? – use goto
• don』t use more than one goto labels
• use goto』s that go forward, not backward
• make sure a goto doesn』t create unreachable code
用巨集定義表示式時,要使用完備的括號;引數可能發生變化的表示式不要使用巨集。
8、類屬性的宣告應按照如下順序常量 -> 靜態變數 -> 非靜態變數public -> protected -> private
17 C C 程式設計規範精述
c c 程式設計規範精述 匈牙利命名法 1 排版上不同小結構間要空行分開,子邏輯項相對父邏輯項要縮排 及if,while 等判斷語句應獨佔行並對齊,且後加空格以顯突出。2 注釋位於相應 上面或右旁邊。且與其它 空行或空格隔開。3 變數命名風格 採用 unix 的全小寫加下劃線的風格或大小寫混排的方式...
C C 程式設計規範
1 注意 strncpy strncat等帶n版本的字串操作函式在源字串長度超出n標識的長度時,會將包括 0 結束符在內的超長字串截斷,導致 0 結束符丟失。這時需要手動為目標字串設定 0 結束符。char dst 11 注意 最好每次定義時初始化為0 dst 11 char src 0123456...
c c 的程式設計規範
乙個程式設計師的編碼水平如何,從他寫的 的風格,布局就可以看出來。所以良好的編碼風格是非常重要的。清晰易讀的 才是高質量的 下面是我從網上找到的乙個關於編碼風格的帖子。對於程式設計的初學者比較有用,高手就不必瀏覽了。一 每日編寫如此之多的 很多同學現在的想法是,我要實現功能,實現了功能以後,萬事大吉...