天天看点

C/C++ 代码规范: 命名规则、注释、格式

摘抄精简Google 开源项目风格指南:

http://zh-google-styleguide.readthedocs.org/en/latest/contents/

一. 命名规则

永远不要使用单词缩写(如count写成cnt)

变量名:

    小写字母,下划线连接,一般用名词,如error_count

    类的成员变量以下划线结尾,如my_exciting_member_variable_

    结构体的数据变量,小写字母,下划线连接

    全局变量,前缀g_ ,如g_global_variable

常量:

    加前缀k,如kDaysInAWeek

类型名:每个单词大写首字母,不含下划线,如MyClass

函数名:

    常规函数:每个单词首字母大写,没有下划线 DeleteElement()

    取值或设值函数:与存取的变量名匹配(如取得成员变量的值)

        如  

void set_num_entries(int num_entries) { 
                num_entries_ = num_entries; 
            }
           

宏命名: 全大写,下划线连接

枚举:使用常量或宏命名方式

文件命名:全部小写,可以用下划线(_)或中线(-)连接

            my_useful_class.cpp (推荐)

            my-useful-class.cpp

            myusefulcalss.cpp

二. 注释

风格:

    // 要统一,只使用一种

文件注释:

    版权声明,许可证,作者标识

    文件内容注释:

        .h 文件对声明的类的 功能和用法做简单说明

        .c 文件对 实现细节或算法技巧 简单描述

类注释:

    每个类的定义都要附带一份注释,描述类的功能和用法

函数注释:

    函数声明:描述函数功能和用法,此处不会描述函数如何工作

        * 函数的输入输出

        * 参数是否可以为NULL

        * 描述函数对空间的分配和释放

        * 是否存在性能隐患

    函数定义:描述函数功能和实现要点

        如,编程技巧、大致实现步骤、为何如此实现

变量注释:

    普通变量:其本身足以说明用途,不需注释

    全局变量:必须注释含义及用途

    类数据成员:必须说明用途,如变量可接受NULL或-1等警戒值,必须说明

实现注释:

    代码前注释:对巧妙或复杂的代码段前注释

    行注释:在行尾空2格注释 (如果连续多行注释,应对齐)

    传入参数注释:对传入的NULL,bool,整数等说明含义(或者使用常量使望文生义)

三. 格式

函数声明和定义:

    函数类型和函数名必须同一行;

    函数名和左圆括号之间无空格;

    圆括号和参数之间无空格;

    左大括号在函数最后一个参数同一行的末尾处;

    右大括号单独一行

int functions(double x, double y) {
            return x+y;
        }
           

函数返回值:

    return表达式不用圆括号, 

return x;  // not return(x);
           

条件/循环语句:

    * if 和左圆括号之间有个空格,右圆括号与左大括号之间有个空格

    * else 和 if 的 右大括号同一行

if (condition) {

        } else {

        }
           

    * 简短并且没有else的条件语句可写在同一行       

if (i == 0) return NULL;
           

    * 单行不需要大括号

指针和引用表达式:

    句点或箭头前后不要有空格. 指针/地址操作符 (*, &) 之后不能有空格.

预处理指令:

    所有都从行首开始,无缩进,即使处于缩进代码块中

// Good - directives at beginning of line
        if (lopsided_score) {
    #if DISASTER_PENDING // Correct -- Starts at beginning of line
            DropEverything();
    #endif
            BackToNormal();
        }
           

类格式:

    声明顺序public, protected, private 从行首缩进一个空格

继续阅读