程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++的一些編程規范(基於google)

C++的一些編程規范(基於google)

編輯:C++入門知識

1.所有頭文件都應該使用#define 防止頭文件被多重包含,命名格式可以參考<PROJECT>_<PATH>_<FILE>_H

2.使用前置聲明盡量減少.h文件中#include的數量,導致不必要的重新編譯

 

3.函數參數:輸入參數在前,輸出參數在後。輸入參數一般傳值或常數引用,輸出參數或輸入輸出參數為非常數指針。

4. .cpp頭文件包含順序

  同名頭文件

  C系統文件

  C++系統文件

  其它庫頭文件

  本項目內其它頭文件

5.命名空間

  (1)分為有名和無名的命名空間

  (2)不能在命名空間的定義中聲明子命名空間,不能在命名空間外使用"命名空間::子命名空間{}"的形式為子命名空間添加新成員。

            a. namespace A

               {

                       namespace B; //error

                }

             b. namespaceA{}

                 A::B{}; //error

                 namespaceA{

                 namespace B{} //right

                 }

   (3)using指令和using聲明

             using指令:using namespace A;  //整個命名空間中的所有成員都可直接使用

             using聲明:using A::成員名  //只聲明特定的成員

    (4)一般來說,使用using聲明會更安全。因為,using聲明只導入指定的名稱,如果該名稱與局部名稱發生沖突,編譯器會報錯。而using指令導入整個命名空間中的所有成員的名稱,包括那些可能根本用不到的名稱,如果其中有名稱與局部名稱發生沖突,則編譯器並不會發出任何警告信息,而只是用局部名去自動覆蓋命名空間中的同名成員。特別是命名空間的開放性,使得一個命名空間的成員,可能分散在多個地方,程序員難以准確知道,別人到底為該命名空間添加了哪些名稱。

     (5)可以為命名空間定義別名

               namespace 別名 = 命名空間名;  //方便使用

6.局部變量

   提倡在盡可能小的作用域中聲明變量,離第一次使用越近越好,在聲明變量時將其初始化

7.類中成員聲明次序

  (1)public,protected,private

  (2)typedefs和enums

            常量

            構造函數

            析構函數

            成員函數

            數據成員

8.使用C++的類型轉換代替C語言的類型轉換

  (1)static_cast:和C風格轉換相似可做值的強制轉換,或者指針的子類到父類的明確的向上轉換

  (2)const_cast:移除const屬性

  (3)reinterpret_cast:指針類型和整形,或者其他指針間不安全的轉換,僅在你對你所做的一切了然於心時使用

  (4)dynamic_cast:運行時類型檢查,指針的父類到子類的轉換

 

9.使用前置自增代替後置自增,後置自增要多一次拷貝

10.盡可能多的使用const

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved