C++編碼規範

來源:互聯網
上載者:User

以下的編碼規範包含了程式排版、注釋、命名、可讀性、變數、程式效率、品質保證、代碼編譯、代碼測試和版本控制等注意事項。

  一、排版:

  1.關鍵詞和操作符之間加適當的空格。

  2.相對獨立的程式塊與塊之間加空行

  3.較長的語句、運算式等要分成多行書寫。

  4.劃分出的新行要進行適應的縮排,使排版整齊,語句可讀。

  5.長運算式要在低優先順序操作符處劃分新行,操作符放在新行之首。

  6.迴圈、判斷等語句中若有較長的運算式或語句,則要進行適應的劃分。

  7.若函數或過程中的參數較長,則要進行適當的劃分。

  8.不允許把多個短語句寫在一行中,即一行唯寫一條語句。

  9.函數或過程的開始、結構的定義及迴圈、判斷等語句中的代碼都要採用縮排風格。

  10.C/C++語言是用大括弧"{"和"}"界定一段程式塊的,編寫程式塊時'{'和'}'應各獨佔一行並且位於同一列,同時與引用它們的語句靠左對齊。在函數體的開始、類的定義、結構的定義、枚舉的定義以及if、for、do、while、    switch、case語句中的程式都要採用如上的縮排方式。

  二、注釋

  1.注釋要簡單明了。

  2.邊寫代碼邊注釋,修改代碼同時修改相應的注釋,以保證注釋與代碼的一致性。

  3.在必要的地方注釋,注釋量要適中。注釋的內容要清楚、明了,含義準確,防止注釋二義性。保持注釋與其描述的代碼相鄰,即注釋的就近原則。

  4.對代碼的注釋應放在其上方相鄰位置,不可放在下面。

  5.對資料結構的注釋應放在其上方相鄰位置,不可放在下面;對結構中的每個域的注釋應放在此域的右方;同一結構中不同域的注釋要對齊。

  6.變數、常量的注釋應放在其上方相鄰位置或右方。

  7.全域變數要有較詳細的注釋,包括對其功能、取值範圍、哪些函數或過程存取它以及存取時注意事項等的說明。

  8.在每個源檔案的頭部要有必要的注釋資訊,包括:檔案名稱;版本號碼;作者;產生日期;模組功能描述(如功能、主要演算法、內部各部分之間的關係、該檔案與其它檔案關係等);主要函數或過程清單及本檔案曆史修改記錄等。

  9.在每個函數或過程的前面要有必要的注釋資訊,包括:函數或過程名稱;功能描述;輸入、輸出及傳回值說明;調用關係及被調用關係說明等。

  三、命名

  1.較短的單詞可通過去掉"母音"形成縮寫;

  2.較長的單詞可取單詞的頭幾發符的優先順序,並用括弧明確運算式的操作順序,避免使用預設優先順序。

  3.使用匈牙利標記法

  四、可讀性

  1.避免使用不易理解的數字,用有意義的標識來替代。

  2.不要使用難懂的技巧性很高的語句。

  3.來源程式中關係較為緊密的代碼應儘可能相鄰。

  五、變數

  1.去掉沒必要的公開變數。

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

  3.仔細定義並明確公開變數的含義、作用、取值範圍及公開變數間的關係。

  4.明確公開變數與操作此公開變數的函數或過程的關係,如訪問、修改及建立等。

  5.當向公開變數傳遞資料時,要十分小心,防止賦與不合理的值或越界等現象發生。

  6.防止局部變數與公開變數同名。

  7.仔細設計結構中元素的布局與排列順序,使結構容易理解、節省佔用空間,並減少引起誤用現象。

  8.結構的設計要盡量考慮向前相容和以後的版本升級,並為某些未來可能的應用保留餘地(如預留一些空間等)。

  9.留心具體語言及編譯器處理不同資料類型的原則及有關細節。

  10.嚴禁使用未經初始化的變數。聲明變數的同時對變數進行初始化。

  11.編程時,要注意資料類型的強制轉換。

  六、函數、過程

  1.函數的規模盡量限制在200行以內。

  2.一個函數最好僅完成一件功能。

  3.為簡易功能編寫函數。

  4.函數的功能應該是可以預測的,也就是只要輸入資料相同就應產生同樣的輸出。

  5.盡量不要編寫依賴於其他函數內部實現的函數。

  6.避免設計多參數函數,不使用的參數從介面中去掉。

  7.用注釋詳細說明每個參數的作用、取值範圍及參數間的關係。

  8.檢查函數所有參數輸入的有效性。

  9.檢查函數所有非參數輸入的有效性,如資料檔案、公開變數等。

  10.函數名應準確描述函數的功能。

  11.避免使用無意義或含義不清的動詞為函數命名

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

  13.明確函數功能,精確(而不是近似)地實現函數設計。

  14.減少函數本身或函數間的遞迴調用。

  15.編寫可重新進入函數時,若使用全域變數,則應通過關中斷、訊號量(即P、V操作)等手段對其加以保護。

  七、可測性

  1.在編寫代碼之前,應預先設計好程式調試與測試的方法和手段,並設計好各種調測開關及相應測試代碼如列印函數等。

  2.在進行整合測試/系統聯調之前,要構造好測試環境、測試專案及測試案例,同時仔細分析並最佳化測試案例,以提高測試效率。

  八、程式效率

  1.編程時要經常注意代碼的效率。

  2.在保證軟體系統的正確性、穩定性、可讀性及可測性的前提下,提高代碼效率。

  3.不能一味地追求代碼效率,而對軟體的正確性、穩定性、可讀性及可測性造成影響。

  4.編程時,要隨時留心代碼效率;最佳化代碼時,要考慮周全。

  5.要仔細地構造或直接用彙編編寫調用頻繁或效能要求極高的函數。

  6.通過對系統資料結構劃分與組織的改進,以及對程式演算法的最佳化來提高空間效率。

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

  8.盡量減少迴圈嵌套層次。

  9.避免迴圈體內含判斷語句,應將迴圈語句置於判斷語句的代碼塊之中。

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

  九、品質保證

  1.在軟體設計過程中構築軟體品質。

  代碼品質保證優先原則

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

  (2)穩定性、安全性,指程式穩定、可靠、安全。

  (3)可測試性,指程式要具有良好的可測試性。

  (4)規範/可讀性,指程式書寫風格、命名規則等要符合規範。

  (5)全域效率,指軟體系統的整體效率。

  (6)局部效率,指某個模組/子模組/函數的本身效率。

  (7)個人表達方式/個人方便性,指個人編程習慣。

  2.只引用屬於自己的存貯空間。

  3.防止引用已經釋放的記憶體空間。

  4.過程/函數中分配的記憶體,在過程/函數退出之前要釋放。

  5.過程/函數中申請的(為開啟檔案而使用的)檔案控制代碼,在過程/函數退出前要關閉。

  6.防止記憶體操作越界。

  7.時刻注意運算式是否會上溢、下溢。

  8.認真處理常式所能遇到的各種出錯情況。

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

  10.系統運行之初,要對載入到系統中的資料進行一致性檢查。

  11.嚴禁隨意更改其它模組或系統的有關設定和配置。

  12.不能隨意改變與其它模組的介面。

  13.充分瞭解系統的介面之後,再使用系統提供的功能。

  14.要時刻注意易混淆的操作符。當編完程式後,應從頭至尾檢查一遍這些操作符。

  15.不使用與硬體或作業系統關係很大的語句,而使用建議的標準語句。

  16.建議:使用第三方提供的軟體開發套件或控制項時,要注意以下幾點:

  (1)充分瞭解應用介面、使用環境及使用時注意事項。

(2)不能過分相信其正確性。

  (3)除非必要,不要使用不熟悉的第三方工具包與控制項。

  十、代碼編譯

  1.編寫代碼時要注意隨時儲存,並定期備份,防止由於斷電、硬碟損壞等原因造成代碼丟失。

  2.同一項目組內,最好使用相同的編輯器,並使用相同的設定選項。

  3.合理地設計軟體系統目錄,方便開發人員使用。

  4.開啟編譯器的所有警示開關對程式進行編譯。

  5.在同一項目組或產品組中,要統一編譯開關選項。

  6.使用工具軟體(如Visual SourceSafe)對代碼版本進行維護。

  十一、代碼測試、維護

  1.單元測試要求至少達到語句覆蓋。

  2.單元測試開始要跟蹤每一條語句,並觀察資料流及變數的變化。

  3.清理、整理或最佳化後的代碼要經過審查及測試。

  4.代碼版本升級要經過嚴格測試。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/conquerorren/archive/2010/05/06/5563477.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.