《C++编程规范:101条规则、准则与最佳实践》阅读、总结

 《C++编程规范:101条规则、准则与最佳实践》阅读、总结:

长语句,要用续行符;低优先级操作符处划分新行,适当缩进;


头文件最后一行为空行,以消除编译警告。

switch 语句必须有default分支。

尽量用乘法代替除法,特别是浮点运算;(浮点除法占用较多的CPU);

unsigned char size = 0;//相当于uint_8
size-1 不会小于0,而是0xff;


严禁使用未经初始化的变量作为右值,特别是引用未经赋值的指针,经常会引起程序崩溃,如:段错误,核心已转储。


struct元素个数应适中,可适当划分成子结构体,以增加可理解、可操作、可维护性。


一个函数仅完成一个功能,不要设计多用途、面面俱到到函数,多功能集于一身,使理解、测试、维护变得困难。



使用宏定义表达式时,要使用完备的括号:
#define AREA(a,b) ((a)*(b))  //因为a和b可能是表达式;宏替换后a*b的两侧也可能有其它运算符。因此,需要全部加括号。


判断指针是否为空,建议直接与NULL比较,而不是使用“!”

路径使用斜线/,而不是反斜线\, /能被不同平台识别。

# STL的使用
用vector和string代替数组,更安全、方便。


# 关于类
- 小类代替巨类;易于编写、测试、使用。


- 以同样的顺序定义和初始化成员变量:
成员变量初始化的顺序要与类定义中声明顺序保持一致,不用考虑构造函数初始化列表中编写的顺序。
很难发现。
eg:
class Test
{
public:
    Test(int a, int b): m_a(a), m_b(b), m_fun_ab(m_a + m_b + 1)

private:
    int m_fun_ab; //在m_a和m_b之前声明,将最先被初始化。
    int m_a;
    int m_b;
};

应改为:
class Test
{
public:
    Test(int a, int b): m_a(a), m_b(b), m_fun_ab(m_a + m_b + 1)

private:
    int m_a;
    int m_b;
    int m_fun_ab;
};


- 显示禁止复制和赋值
class T
{
private://使T不能复制

    T(const T&);//未实现
    T& operator= (const T&);//未实现
};

 

你可能感兴趣的:(C++)