C/C++代码命名和格式规范

来源:互联网 发布:php rsa加密解密 编辑:程序博客网 时间:2024/05/21 06:41

命名
 
命名,包括文件名、类名、结构名、类型名、函数名、变量名、参数名等都是程序设计中重要的一部分。一个好的名称,体现了一个深思熟虑的过程,同时也 能够帮助别人更好地理解开发者的思路。如果发现程序中,充满了a, b, c, x, y, z, tmp这种命名的变量,这时候就需要仔细的考虑自己的实现是否有问题。
 
类(结构)名
    类名必须是名词,类名必须明确表示这个类代表了什么。
    如果类名超过3个单词,说明这个类有可能需要拆分了。
    不要把父类的名字带到子类中。
    类名加上后缀也是一种选择。如下载代理类,可以写为DownloadProxy。
    类名首字母大写;用大写字母分隔单词,除单词的首字母外,全部小写;类名中不要出现下划线“_”。
 
类(结构)属性名
    属性由成员前缀”m_“属性,属性名采用匈牙利命名规范。
 
方法
    方法与函数执行一个任务,因此应当用动词来命名。比方说,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
        }
    }
undefined    另外,循环变量可根据循环变量类型命名,比如:

    p point; w word; ch char; n number; whc widechar


指针变量
    指针变量应在类型前加上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;
 typedef map EdgeMap;
 typedef list EdgeList;
 

——————————————————————————————————————————

格式

 
{}规则
    “{“与”}”单独占一行。
    “{“与”}”与上一行行首对齐。
    If与while后哪怕只有一句话,也要加上“{“与”}”。
    while (*(buf+p++) != ' ')
        printf("hello\n");
 

()规则
    "("与前一个关键字之间留一个空格。
    "("与前函数名之间不需要留一个空格。
    Return语句尽可能不要用"()"
    return (a*b^2>100)?(a):(b);
 

缩进规则
    缩进永远为4。
    用空格代替tab。
    Tab永远用4。
    如果缩进超过5层,考虑代码优化。
 
列长度
    一列不应该超过80个英文字符。
    一个声明占一行
    一个声明占一行。
 
三元表达式
    条件表达式占一行
    then与else应单独占一行。
 (condition)     funct1() : func2();  
 Or
    (condition)
     long statement
    : another long statement;
 

头文件顺序
    头文件应当按照与功能的特点性从高到低排列。顺序为
    当前目录的头文件。
    自行开发库的头文件。
    第三方库的头文件。
    标准C++头文件。
    标准C头文件

 
空格
    操作符需要加上空格。
    关键字前后要加上空格。
    逗号后要加上空格。
    冒号后要加上空格。
    在一行内的分号后要加上空格,行末的分号不要空格。
    fun(a, b);
    for (int I = 0; I < 50; i++);
 

1 0
原创粉丝点击