关闭

C++编码规范

标签: c++
1231人阅读 评论(0) 收藏 举报
分类:

命名规则:


      所有命名,都尽量做到“一目了然”,并且不要太过冗长。尤其要禁止含意和所实现的功能不一致的现象。含意上一般动名词也要注意,一般函数第一个单词尽量用动词


种类

示例

说明

文件名

RoleManager

以大写字母开头的单词拼接而成

类名

RoleMaterial

以大写字母开头的单词拼接而成

类成员变量

_roleId (私有)

RoleName (公有)

私有成员:以下划线开头,首字母小写,单词第一个字符大写

公有成员:以大写字母开头的单词拼接而成

类成员函数

_getRoleId (私有)

getRoleId (公有)

私有函数:首字母小写,单词第一个字符大写,下划线开头

公有函数:以大写字母开头的单词拼接而成,首字母小写

局部变量

roleName

单词第一个字符大写,首字母小写

函数参数

roleName

单词第一个字符大写,首字母小写

全局函数

getRoleInfo

下划线起头,以大写字母开头的单词拼接而成

全局变量

_RoleInfo

下划线起头,以大写字母开头的单词拼接而成

常量定义

ROLE_TYPE

全大写字母的单词,单词间以下划线连接

可变常量(系统参数等)

_MAX_USER

全大写字母的单词,单词间以下划线连接,整个变量以下划线开头

 

 

 

  

注释相关


共性:注释要随代码更新而变动,杜绝注释的描述和代码功能的不一致!所有注释统一都以双斜杠开头,注释尽可能单独占一行,尽量不要出现上百行都看不到一行注释的情况。

  • 文件注释:写在文件最开头,注明文件中代码的作用以及注意点即可
  • 函数注释:声明和实现处要一致,要和函数实现的功能相符合,不能一眼看出含意的参数要添加说明
  • 代码行注释:尽可能地为每个for、while、if、else、switch都写上说明,一般在这些语句的地方,都是体现业务功能的地方。

 

缩进和空格


      缩进用空格或者TAB键都可以,但单个文件内要统一,如果使用空格缩进,要注意,所有缩进要统一空格数量,一个缩进至少2个空格。

非缩进处的空格,不要出现两个空格连续在一起的情况


其它


      大括号相关:for、while、if、else等语句,必须用大括号,且括号内的代码要单独占一行,以下是示例


for(int i=0;i<10;i++)a=1;

if(b=1)a=1;

else a=2;

不良

for(int i=0;i<10;i++)

  a=1;

if(b=1)

  a=1;

else

  a=2;

不良

for(int i=0;i<10;i++)

  {

  a=1;

  }

if(b=1)

  {

  a=1;

}

Else

  }

  a=2;

  }

不良

for(int i=0;i<10;i++){

  a=1;

}

if(1==b){

  a=1;

}else if(2==b){

  a=2;

}else{

  a=3;

}

建议用这样的写法

关于第一个大括号{是否该另起一行,关系不大,个人建议不另起行,这样在代码行比较多的时候,一页可以看到更多的代码


      局部变量尽可能地在用到的地方定义,省得一个比较大的函数在开头的地方出现过多的局部变量的定义

 

      不要泛滥使用多层括号结构,如下面的两个函数实现的是同样的功能,红色部分是这个函数的主要处理逻辑,明显后面一种写法更清析,特别当红色块有更多行的代码时,更显得如此


不良

int TypeConvert(int p_type, int p_data){

       if(p_type < 0){

              return -1;

       }else{

              if(p_type < 100){

                     if(p_data > 0){

                            int ret = p_data / p_type;

                            ……

                            return ret;

                     }else{

                            return -2;

                     }

              }else{

                     return -3;

              }

       }

}

int TypeConvert(int p_type, int p_data){

       if(p_type < 0){

              return -1;

       }

if(p_type < 100){

       return -3;

}

if(p_data <= 0){

       return -2;

}

       int ret = p_data / p_type;

       ……

       return ret;

}

 

 

不允许将两条语句写在一行中,如:


a=3;a=a*4;

 判断语句:if、while中用到的判断比较,整型和布尔型要区别对待,用整型结果当作判断条件,如:


不良

int a=0;

if(a){

   …

}

 

int a=0;

if(0 != a){

   …

}

 


在比较等于的时候,如果有常量参与,尽量把常量写在前面,如:

if(a == 1) 写成 if(1 == a) 更好些

  • 文件引用:尽可能地分出引用关系的层次,不要写成a引用b,b引用c,c又引用a
  • 不到万不得已,不得使用goto
  • 能用整数运算,尽量避免浮点运算
  • 共通的抽取:同一个业务,尽量写在一处,而不要写成多份拷贝,以便业务更改维护
  • 日志:日志级别要清楚,错误、警告、普通、调试 

最后:细心才能写出好代码,用心才能进步!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:440271次
    • 积分:6005
    • 等级:
    • 排名:第4365名
    • 原创:150篇
    • 转载:15篇
    • 译文:0篇
    • 评论:153条
    博客专栏
    最新评论