中国与美国的战争:C/C++代码规范(1)

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 10:41:44

命名

命名,包括文件名、类名、结构名、类型名、函数名、变量名、参数名等都是程序设计中重要的一部分。一个好的名称,体现了一个深思熟虑的过程,同时也 能够帮助别人更好地理解开发者的思路。如果发现程序中,充满了a, b, c, x, y, z, tmp这种命名的变量,这时候就需要仔细的考虑自己的实现是否有问题。

类(结构)名

  • 类名必须是名词,类名必须明确表示这个类代表了什么。
  • 如果类名超过3个单词,说明这个类有可能需要拆分了。
  • 不要把父类的名字带到子类中。
  • 类名加上后缀也是一种选择。如下载代理类,可以写为DownloadProxy。
  • 类名首字母大写;用大写字母分隔单词,除单词的首字母外,全部小写;类名中不要出现下划线“_”。

类(结构)属性名

  • 属性由成员前缀”m_“b标记,属性名采用匈牙利命名规范。

方法

  • 方法与函数执行一个任务,因此应当用动词来命名。比方说,DumpDataToFile()就要好于DataFile()。
  • 方法名首字母大写;用大写字母分隔单词,除单词的首字母外,全部小写,方法名中不要出现下划线。

函数

  • 方法与函数执行一个任务,因此应当用动词来命名。
  • 函数名全部小写,单词之间用下划线分隔。

方法与函数参数名

  • 首字母小写。
  • 除了第一个单词,所有单词的首字母大写。
  • 名称中不应出现”_”。

类库名

  • 如果使用C书写类库,或在C++不使用namespace书写类库,为了避免命名冲突,需要在类名,结构名,函数名前加上类库名前缀。类库名应当简洁、明确。 如:
    ImEgg* ImEgg_new();

变量名

  • 变量名使用匈牙利命名规则。
  • 全部小写字母。
  • 使用”_”作为分隔符。
  • 唯一能违反以上命名规则的,是一些循环中需要用到的自增变量。 如:
    int fun(Point* pPoint) { Point* p_nest_point = pPoint; char* p = NULL; char sz_buf[255]; for(int i = 0; i < 50 && (sz_buf+p++) != ' '; i++) { // do stuff } }
  • p point b byte w word dw double word ch char wch wide char n number sz char[] f bool fn function pointer v void lpsz char* terminated by zero

指针变量

  • 指针变量应在类型前加上p前缀,其后变量名命名规则不变。
  • *号永远靠近类型,一行声明中只出现一个指针变量。 如:
    Point* p_point;

引用变量

  • 引用变量应在类型前加上r前缀,其后变量名命名规则不变。

全局变量

  • 全局变量应使用g_属性描述,其后变量名命名规则不变。 如:
    ImLog4c* g_pLogger;

静态变量

  • 静态变量应使用s_属性描述,其后变量名命名规则不变。
    ImLog4c* s_pLogger;

枚举类型

  • 枚举类型命名规则使用大写字母,用下划线分隔单词。
    Enum PIN { PIN_ON = 1; PIN_OFF; };

  • 宏命名规则使用大写字母,用下划线分隔单词。
    #define MAX_LENGTH 50 #define MAX(a, b) (a)>(b)?(a):(b)

集合名称

  • 集合名称使用复数,其它与变量名规范相同。
    GList* edges = g_list_new(); vector edges; typedef vector EdgeVector; typedefmap EdgeMap; typedef list EdgeList;