《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&);//未实现
};
​


1)注释要有文件头,函数头,变量命名注释等;
2)函数命名,以及变量命名,必须要满足自释义(命名可以进行自我解释),并且保持团队的风格统一;
3)所有的成员变量数据必须私有;
4)结构体要注意对齐申请问题;
5)构造函数内不要申请资源(内存,线程),申请内核对象等,避免申请失败又不能通过返回值告知;
6)嵌套不应超过3层(if,for,while等等);
7)可以复用的代码应设计函数或定义宏;
8)函数返回值的设计要注意,简单赋值和释放资源的函数(函数逻辑无分支)返回值可以用void,IsValidFunc这一类命名的函数(函数逻辑两条分支)可以用BOOL,其它的函数(函数逻辑分支大于2)都必须用int或uint等类型作为返回值,并设计足够充分的状态码(错误码)作为函数返回值的统一管理;
9)在函数内部,调用其它函数时,必须判断该函数的返回值,并做相应处理;
10)函数的参数个数,应尽量少,一般不超过3个,并且单个参数的数据量应控制在最少,比如结构体不应作为参数,而应使用结构体指针;
11)函数执行时,应首先对函数的传入参数进行有效性判断;
12)代码内部避免出现MAGIC NUMBER(0和1之外的数字),应使用宏定义,或者静态量;
13)一个代码工程内部会普遍复用的参数(比如圆周率),函数(基本算子),可以设计为通用库,供合作开发复用;甚至可以在多个代码工程内复用;
14)应使用内存池,线程池等技术,高效稳定使用资源,内存只在初始化的时候申请一次,程序退出时释放一次,绝对避免出现频繁的内存(线程)申请释放等工作;
15)少量的数据空间使用可以用栈内存,避免使用堆内存。
16)基本上不允许出现全局变量;
17)满足编程目的的情况下,尽可能使用简单的做法,避免炫技(比如指针的指针,指针的引用这类要花时间理解的做法)
18)一个函数代码行数一般控制在100行以下,最多不要超过200行;

​

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值