《C++编程规范——101条规则、准则与最佳实践》笔记003

C++编程规范

C++ coding standards

Author
Herb Sutter 《Exceptional C++ Style》 《Exceptional C++》 《More Exceptional C++》
Andrei Alexandrescu 《Modern C++ Design》 Loki

组织和策略问题

如果人们按照程序员编程的方式修建房屋,那么一只啄木鸟就能毁灭整个文明。 ——Gerald Weinberg

第3条 使用版本控制系统

摘要
使用版本控制系统(Version Control System, VCS)
永远不要让文件长时间地登出
在新的单元测试通过之后,应该频繁登入
确保登入的代码不会影响构建成功
讨论
几乎所有大一点的项目都需要不只一个开发人员和一周以上的开发时间。在这样的项目中,需要比较同一文件的各个历史版本,以确定修改是何时(以及/或者由谁)进行的;需要控制和管理源代码的变更。
如果有多个开发人员,他们将会并行地进行修改,可能会在同一时间修改同一文件的不同部分。此时,就需要能对文件进行自动登出/版本管理的工具了,有些情况下还需要并发编辑的合并功能。版本控制系统能够自动化和控制登出、版本管理及合并操作。版本控制系统能够比人工实施更快更正确。而且我们也不需要在管理琐事上浪费时间——编写软件才是我们的工作。
即使是单独工作的开发人员,也有脑子短路的瞬间,需要搞清楚何时为什么引入了某个错误或者进行了某个修改。版本控制系统能够自动地跟踪每个文件的历史,使我们能够“让时光倒流”。问题并不在于你是否需要从历史中寻找答案,而在于你何时需要(这只是迟早的事)。
不要破坏构建。版本控制系统中的代码必须总能构建成功。

许多其他的版本控制系统产品要么将CVS作为模仿的标准,要么是以其为基础在构建新的功能。

例外情况
只有一个程序员且从头至尾只需一周的项目,可能不需要版本控制系统。
组织和策略问题 1 第0 不要拘泥于小节(又名:了解哪些东西不应该标准化) 2 第1 在高警告级别干净利落地进行编译 4 第2 使用自动构建系统 7 第3 使用版本控制系统 8 第4 做代码审查 9设计风格 11 第5 一个实体应该只有一个紧凑的职责 12 第6 正确、简单和清晰第一 13 第7 编程中应知道何时和如何考虑可伸缩性 14 第8 不要进行不成熟的优化 16 第9 不要进行不成熟的劣化 18 第10 尽量减少全局和共享数据 19 第11 隐藏信息 20 第12 懂得何时和如何进行并发性编程 21 第13 确保资源为对象所拥有。使用显式的RAII和智能指针 24 编程风格 27 第14 宁要编译时和连接时错误,也不要运行时错误 28 第15 积极使用const 30 第16 避免使用宏 32 第17 避免使用“魔数” 34 第18 尽可能局部地声明变量 35 第19 总是初始化变量 36 第20 避免函数过长,避免嵌套过深 38 第21 避免跨编译单元的初始化依赖 39 第22 尽量减少定义性依赖。避免循环依赖 40 第23 头文件应该自给自足 42 第24 总是编写内部#include保护符,决不要编写外部#include保护符 43 函数与操作符 45 第25 正确地选择通过值、(智能)指针或者引用传递参数 46 第26 保持重载操作符的自然语义 47 第27 优先使用算术操作符和赋值操作符的标准形式 48 第28 优先使用++和--的标准形式。优先调用前缀形式 50 第29 考虑重载以避免隐含类型转换 51 第30 避免重载&&、||或 ,(逗号) 52 第31 不要编写依赖于函数参数求值顺序的代码 54 类的设计与继承 55 第32 弄清所要编写的是哪种类 56 第33 用小类代替巨类 57 第34 用组合代替继承 58 第35 避免从并非要设计成基类的类中继承 60 第36 优先提供抽象接口 62 第37 公用继承即可替换性。继承,不是为了重用,而是为了被重用 64 第38 实施安全的覆盖 66 第39 考虑将虚拟函数声明为非公用的,将公用函数声明为非虚拟的 68
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值