C++ 代码书写规范
2016-02-24 14:47
162 查看
根据平时写代码总结出来的个人代码风格习惯。根据遇到的情况不断更新。
头文件中避免多重包含
#ifndef XXXXXX_H
#indefine XXXXXX_H
#endif
局部变量尽量至于较小作用域,声明时就初始化
尽量少使用全局变量,静态变量可以视作全局变量
对于单参数的构造函数使用关键字explicit,避免隐式转换
在类中使用特定的声明次序:public:在private:之前,成员函数在数据成员(变量)前。定义次序如下:public:、protected:、private:其中typedef与num,常量,成员函数,数据成员
仅是数据的集合 使用struct
使用引用做函数形参,需要加上const
强制转换使用C++类型的,不要使用int y = (int ) x 或 int y = i nt ( x );
使用迭代器与模板类型来说,尽量使用前置++\--,后置++\--需要对表达式值进行一次拷贝,增加了代价
任何可以使用const的情况下,尽量使用 const变量,const函数(不会修改类成员变量状态)
整数用0,实数用0.0,指针用NULL(C++11中 nullptr),字符(串)用'\0'。
使用sizeof时,最好是sizeof(varname)
函数名总以动词开头,后面跟随其它名称。CheckForErrors()
峰值命名法,不含有下划线”_”
文件名(.cpp,.h) 全部小写,可以包含”_”
类型命名 采用峰值命名法,所有类型名: 类、结构体、类型定义(typedef)、枚举
变量名(结构体成员,命名空间普通成员),小写并且每个单词用”_”隔开。time_of_error,,类成员名以”_”结尾
全局变量命名,以g/g_作为前缀,Logger g_Log; Logger* g_pLog;
const常量命名 k+峰值命名
命名空间的名称全部小写
枚举值命名,所有字母都大写,并用下划线 '_' 作为单词分隔。
#define 宏命名 全部大写 下划线
函数的解释。
/**
* @brief 函数名: 函数功能
* @param 参数名:参数意义
* @return: 函数返回值
*/
尽量不使用ASCII字符,使用UTF-8格式
函数参数较多,一行写不下,我们应该分成几行来写,并且每个参数都另起一行对齐:
int AnyMethod(int arg1
, int arg2
, int arg3
, int arg4) {
}
//函数名和左括号之间没有空格
//参数和括号之间没有空格
//右括号与左大括号之间总是有空格
//如果函数有const 必须与最后一个参数为一行
If语句
If (settingslegendItem.backgroundMode ==
QwtPlotLegendItem::ItemBackground) {
….
}//在花括号后加上注释有助于理解 ifXX
//if中内容过多 可以分行写
//if和括号之间有空格, 右括号与大括号之间有空格
switch (var) {
case 0: {
}
Default: {
}
}
While (var) {
}
For语言书写规范
For (double x = -200.0; x <= 1000.0; x += 100.0 ) {
}
指针变量命名,指针变量名多数前面加p,”*”靠近变量名
String *pName = new String;
句点(.)或箭头(->)前后不要有空格,指针/地址操作符(*、&)后不要有空格。
布尔表达式 超过了80个字符(过长了),逻辑运算符总位于行尾
If (this_one_thing > this_other_thing &&
a_third_thing==a_fourth_thing&&
yet_another&last_one){
...
}
Return 返回值不加括号
字符后面有,与;,跟着字符走,若符号后面有字符之间添加空格
(•••)与[•••]中间有字符,参数与括号之间无空格
字符之间运算符、逻辑符等。字符空格符号空格字符
定义set< list<string> >x; 防止出现运算符
头文件中避免多重包含
#ifndef XXXXXX_H
#indefine XXXXXX_H
#endif
局部变量尽量至于较小作用域,声明时就初始化
尽量少使用全局变量,静态变量可以视作全局变量
对于单参数的构造函数使用关键字explicit,避免隐式转换
在类中使用特定的声明次序:public:在private:之前,成员函数在数据成员(变量)前。定义次序如下:public:、protected:、private:其中typedef与num,常量,成员函数,数据成员
仅是数据的集合 使用struct
使用引用做函数形参,需要加上const
强制转换使用C++类型的,不要使用int y = (int ) x 或 int y = i nt ( x );
使用迭代器与模板类型来说,尽量使用前置++\--,后置++\--需要对表达式值进行一次拷贝,增加了代价
任何可以使用const的情况下,尽量使用 const变量,const函数(不会修改类成员变量状态)
整数用0,实数用0.0,指针用NULL(C++11中 nullptr),字符(串)用'\0'。
使用sizeof时,最好是sizeof(varname)
函数名总以动词开头,后面跟随其它名称。CheckForErrors()
峰值命名法,不含有下划线”_”
文件名(.cpp,.h) 全部小写,可以包含”_”
类型命名 采用峰值命名法,所有类型名: 类、结构体、类型定义(typedef)、枚举
变量名(结构体成员,命名空间普通成员),小写并且每个单词用”_”隔开。time_of_error,,类成员名以”_”结尾
全局变量命名,以g/g_作为前缀,Logger g_Log; Logger* g_pLog;
const常量命名 k+峰值命名
命名空间的名称全部小写
枚举值命名,所有字母都大写,并用下划线 '_' 作为单词分隔。
#define 宏命名 全部大写 下划线
函数的解释。
/**
* @brief 函数名: 函数功能
* @param 参数名:参数意义
* @return: 函数返回值
*/
尽量不使用ASCII字符,使用UTF-8格式
函数参数较多,一行写不下,我们应该分成几行来写,并且每个参数都另起一行对齐:
int AnyMethod(int arg1
, int arg2
, int arg3
, int arg4) {
}
//函数名和左括号之间没有空格
//参数和括号之间没有空格
//右括号与左大括号之间总是有空格
//如果函数有const 必须与最后一个参数为一行
If语句
If (settingslegendItem.backgroundMode ==
QwtPlotLegendItem::ItemBackground) {
….
}//在花括号后加上注释有助于理解 ifXX
//if中内容过多 可以分行写
//if和括号之间有空格, 右括号与大括号之间有空格
switch (var) {
case 0: {
}
Default: {
}
}
While (var) {
}
For语言书写规范
For (double x = -200.0; x <= 1000.0; x += 100.0 ) {
}
指针变量命名,指针变量名多数前面加p,”*”靠近变量名
String *pName = new String;
句点(.)或箭头(->)前后不要有空格,指针/地址操作符(*、&)后不要有空格。
布尔表达式 超过了80个字符(过长了),逻辑运算符总位于行尾
If (this_one_thing > this_other_thing &&
a_third_thing==a_fourth_thing&&
yet_another&last_one){
...
}
Return 返回值不加括号
字符后面有,与;,跟着字符走,若符号后面有字符之间添加空格
(•••)与[•••]中间有字符,参数与括号之间无空格
字符之间运算符、逻辑符等。字符空格符号空格字符
定义set< list<string> >x; 防止出现运算符
相关文章推荐
- C++基础::Stream(二)
- C++ STL--stack/queue 的使用方法
- C++编程,输出二叉树每层最右端节点的数值
- C++控制台程序实现暂停功能
- C/C++——求下面数据类型的最大值和最小值: char, short, int, long, float, double, long double和numeric_limits使用
- new (std::nothrow) 与 new
- 2、C++ 的升级
- C语言多线程同步 -- 信号量semaphore.h
- c++ 显示小数点后的0
- C++命名空间的使用实践
- [C++]隐式类类型转换(转)
- C++设计模式-1简单工厂模式
- c语言入门之项目3.9——输出一个“空”三角形
- c++STL中常用模板常用函数记录(新手向)
- C/C++——基本数据类型的大小并且sizeof(int *) = 8
- C语言日志的实现,用宏实现日志
- 程序员面试题精选100题(56)-C/C++/C#面试题(4)
- 程序员面试题精选100题(54)-C++/C#面试题(3)
- 程序员面试题精选100题(53)-C++/C#面试题(2)
- 程序员面试题精选100题(52)-C++面试题(1)