C++编程规范(101条)读书随笔

1。组织和策略问题
如果人们按照程序员编程的方式修建房屋,那么一只啄木鸟就能毁灭整个文明。
第0条:不要拘泥于小节(又名:了解哪些东西不应该标准化)
不要规定缩进多少,应该规定要用缩进来体现代码的结构
不要强制行的具体长度,应该保证代码行的长度有利于阅读
不要在命名规范方面规定太多,应该规定的是使用一致的命名规范
不要规定注释体例(除非需要使用工具从特定的体例中提取文档),应该编写有用的注释
第1条:在高警告级别干净利落地进行编译
比如常见的警告:
第三方头文件引起的
未使用的函数参数
定义了从未使用的变量
变量使用前可能未经初始化
遗漏return语句
有符号/无符号数的不匹配
第2条:使用自动构建系统
单操作构建过程
第3条:使用版本控制系统
VCS
第4条:在代码审查上投入

2。设计风格
复杂性啊,愚人对你视而不见。实干家受你所累。有些人避而远之。惟智者能够善加消除。
不成熟的优化是程序设计中的万恶之源。
第5条:一个实体应该只有一耳光紧凑的职责
失败的设计:
realloc:如果传入的指针参数为NULL就分配空间,如果传入的大小参数为0就释放空间
basic_string:毫无道理地重复了许多标准算法,而扩展所留的裕度很小
第6条:正确、简单和清晰第一
程序以人为本,第二是计算机
不要使用不必要的或者小聪明式的操作符重载
应该使用命名变量,而不要使用临时变量,作为构造函数参数
第7条:编程中应该知道何时和如何考虑可伸缩性
动态分配内存和使用高效算法。。。
第8条:不要进行不成熟的优化
让一个正确的程序更快速,比让一个快速的程序正确,要容易的太多、太多。
inline悖论
第9条:不要进行不成熟的劣化
避免不必要的劣化哦~
第10条:尽量减少全局和共享变量
共享会导致冲突
为“无共享”而奋斗吧,用通信方式代替数据共享。
第11条:隐藏信息
不要泄密:不要公开提供抽象实体的内部信息。
第12条:懂得何时和如何进行并发性编程
这是个大课题:
参考目标平台的文档,了解该平台的同步化原语。
最好将平台的原语用自己设计的抽象包装起来。
确保正在使用的类型在多线程程序中使用时安全的:保证非共享的对象独立,记载调用者在不同线程中使用该类型的同一对象需要做什么。加锁力度要适合,不便对象无须加锁
第13条:确保资源为对象所有。使用显示的RAII和智能指针
RAII:resource acquisition is initialization,资源获取即初始化

3。编程风格
一个人的常量是另个人的变量
第14条:宁要编译时和链接时错误,也不要运行时错误
第15条:积极使用const
常量很安全,在编译时会对其进行检查,而且与c++系统已浑然一体
函数中值传递const与非const的值是等效的
第16条:避免使用宏
抽象设施中最生硬的东西
在c++中几乎从不需要宏。可以用const或者enum定义易于理解的常量,用inline避免函数调用的开销,用template指定函数系列和类型系列,用namespace避免名称冲突
不要使用宏,除非不得不用
宏不能理解尖括号
第17条:避免使用魔数
常量应该是枚举或者const值,有合适的作用域和名称。
第18条:尽可能局部地声明变量
第19条:总是初始化变量
例外情况:硬件或者其他进程直接写入的输入缓冲区数据和volatile型数据不需要程序对其进行初始化
第20条:避免函数过长,避免嵌套过深
尽量紧凑:对一个函数只赋予一种职责
不要自我复制:优先使用命名函数,而不要让相似的代码片段反复出现
优先使用&&:在可以使用&&条件判断的地方要避免使用连续嵌套的if
不要过分使用try:优先使用析构函数进行自动清楚而避免使用try代码块
优先使用标准算法:算法要比循环嵌套要少,通常也更好
不要根据类型标签进行分支:优先使用多态函数
第21条:避免跨编译单元的初始化依赖
保持初始化顺序:不同编译单元中的名字空间级对象绝不应该在初始化上互相依赖,因为其初始化顺序是未定义的。
第22条:尽量减少定义性依赖。避免循环依赖
第23条:头文件应该自给自足
第24条:总是编写内部的#include保护符,决不编写外部#include保护符
防止多次包含
例如在fo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值