头文件
1.用#define防止头文件被包含多次
#ifndef _MY_HEADER_
#define _MY_HEADER_
...
#endif
缩进风格
1.大括号独占一行,永远不省略大括号
int func(void)
{
... // code_here
}
2.缩进的宽度为4个空格
3.用空格代替制表符
可以使用制表符编写代码,最终把制表符转换为空格
4.每行代码不要超过80个字符
结构体和类
1.类的定义在头文件中,类的实现在cpp文件中
对于模板类定义和实现都在头文件中
2.类的定义中先写共有函数,再写私有成员
3.类的定义中写参数的默认值,在类的实现文件中用注释标明默认值
/* Node.h */
class Node
{
public:
Node(int i = 0, Node *next = NULL, Node *prev = NULL);
};
/* Node.cpp */
Node(int i /* = 0 */, Node *next /* = NULL */,
Node *prev /* = NULL */) : i(i), next(next), prev(prev) { }
表达式
1.单目运算符和变量名之间不空格
*p++
2.双目运算符前后空格
sum = a + b
3.复杂表达式用小括号标出层次关系
(a > b) && (b > c)
4.关于条件的判断中与0的比较
char ch; // (ch == '\0')
int i; // (i == 0)
double d; // (d == 0.0)
void *p; // (p == NULL)
bool isEmpty; // (isEmpty)
基本语句
1.if,while,for,return,switch之后空格再接括号
if (condition)
{
...
}
switch (value)
{
case 1:
doSomething();
break;
default:
doDefault();
break;
}
2.break语句单独占一行
命名
1.命名原则:清晰直观地反映变量的作用
2.类名首字母大写,其他单词首字母大写
class MyClass
3.枚举类名大写,前后各加两个下划线,枚举成员都大写
enum SortFunc
{
INSET_SORT = 0,
SHELL_SORT,
...
SORT_FUNC_QUANTIY
};
4.常量大写
const int CONST_INT
5.变量名函数名都小写开头之后不同单词开头首字母大写
int intVariable;
void funcName(void);
C++特性
1.尽量使用const代替宏定义常量
2.尽量使用inline函数代替宏定义函数
3.使用C++风格的格式转换,static_cast, dynamic_cast
4.对于迭代器和模板类型来说尽量使用前置自增自减
(后置自增自减需要拷贝当前值,影响效率)
注释
1.在文件开头,使用块注释给说明一些文件信息
/**
* @file filename
* @brief description
* @author yourname
* @e-mail your e-mail address
* @date today
*/
2.在函数定义处,使用块注释说明函数
/**
* @brief 两个数相加
*
* @param a 加数
* @param b 被加数
*
* @return 和
*/
int add(int a, int b)
{
return (a + b);
}
3.代码中的一些说明用单行注释
// 一些说明
4.类、结构体、枚举类中成员的说明用///>
class MyString
{
public:
...
private:
int length; ///> 字符串的长度
char *pstring; ///> 字符串数组
}
5.函数中声明的局部变量用单行注释在变量后说明变量的含义
int value; // 变量的含义
6.用分隔板分隔对分块的代码进行说明
/****************************************************************
* 对于以下代码功能的一些说明
****************************************************************/