C++编程规范简要笔记

0、了解哪些东西不应该标准化
命名规则(参考):类、函数和枚举 LikeThis; 变量名 likeThis; 成员变量名likeThis_; 宏名称

LIKE_THIS;

1、在高警告级别干净利落地进行编译
2、使用自动构建系统
3、使用版本控件系统
4、在代码审查上投入
5、一个实体应该只有一个紧凑的职责
6、正确、简单和清晰第一
7、编程中应知道何时和如何考虑可伸缩性
8、不要进行不成熟的优化
9、不要进行不成熟的劣化
10、尽量减少全局和共享数据
11、隐藏信息
12、懂得何时和如何进行并发性编程
13、确保资源为对象所拥有,使用显式的RAII和智能指针
14、宁要编译时和连接时错误,也不要运行时错误
15、积极使用const
16、避免使用宏
17、避免使用“魔数”
18、尽可能局部地声明变量
19、总是初始化变量
20、避免函数过长,避免嵌套过深
21、避免跨编译单元的初始化依赖
22、尽量减少定义性依赖,避免循环依赖
23、头文件应该自给自足
24、总是编写内部#include保护符,决不要编写外部#include保护符
25、正确地选择通过值、(智能)指针或引用传递参数
26、保持重载操作符的自然语义
27、优先使用算术操作符和赋值操作符的标准形式
28、优先使用++和--的标准形式,优先调用前缀形式
29、考虑重载以避免隐含类型转换
30、避免重载&&、||或,(逗号)
31、不要编写依赖于函数参数求值顺序的代码
32、弄清所要编写的是哪种类
33、用小类代替巨类
34、用组合代替继承
35、避免从并非要设计成基类的类继承
36、优先提供抽象接口
37、公用继承即可替换性。继承,不是为了重用,而是为了被重用。
38、实施安全的改写
39、考虑将虚拟函数声明为非公用的,将公用函数声明为非虚拟的
40、要避免提供隐式转换
41、将数据成员设为私有的,无行为的聚集除外
42、不要公开内部数据
43、明智地使用pimpl
44、优先编写非成员非友元函数
45、总是一起提供new和delete
46、如果提供类专门的new,应该提供所有标准形式(普通、衣服和不抛出)
47、以同样的顺序定义和初始化成员变量
48、在构造函数中用初始化代替赋值
49、避免在构造函数和析构函数中调用虚拟函数
50、将基类析构函数设为公用且虚拟的,或者保护且非虚拟的
51、析构函数、释放和交换绝对不能失败
52、一致地进行复制和销毁
53、显式地启用或者禁止复制
54、避免切片,在基类中考虑用克隆代替复制
55、使用赋值的标准形式
56、只要可行,就提供不会失败的swap(而且要正确地提供)
57、将类型及其非成员函数接口置于同一名字空间中
58、应该将类型和函数分别置于不同的名字空间中,除非有意想让它们一起工作
59、不要在头文件中或者#include之前编写名字空间using
60、要避免在不同的模块中分配和释放内存
61、不要在头文件中定义具有链接的实体
62、不要允许异常跨越块边界传播
63、在模块的接口中使用具有良好可移植性的类型
64、理智地结合静态多态性和动态多态性
65、有意地进行显式自定义
66、不要特化函数模板
67、不要无意地编写不通用的代码
68、广泛地使用断言记录内部假设和不变式
69、建立合理的错误处理策略,并严格遵守
70、区别错误和非错误
71、设计和编写错误安全代码
72、优先使用异常报告错误
73、通过值抛出,通过引用捕获
74、正确地报告、处理和转换错误
75、避免运用异常规范
76、默认时使用vector,否则,选择其他合适的容器
77、用vector和string代替数组
78、使用vector(和string::c_str) 与非C++API交换数据
79、在容器中只存储值和智能指针
80、用push_back代替其他扩展序列的方式
81、多用范围操作,少用单元素操作
82、使用公认的惯用法真正地压缩容量,真正地删除元素
83、使用带检查的STL实现
84、用算法调用来代替手工编写的循环
85、使用正确的STL查找算法
86、使用正确的STL排序算法
87、使谓词成为纯函数
88、算法和比较器的参数应多用函数对象少用函数
89、正确编写函数对象
90、避免使用类型分支,多使用多态
91、依赖类型,而非其表示方式
92、避免使用reinterpret_cast
93、避免对指针使用static_cast
94、避免强制转换const
95、不要使用c风格的强制转换
96、不要对非pod进行memcpy操作或者memcmp操作
97、不要使用联合重新解释表示方式
98、不要使用可变长参数(...)
99、不要使用失效对象,不要使用不安全函数
100、不要多态地处理数组

时间: 2024-10-10 16:23:29

C++编程规范简要笔记的相关文章

编程规范的笔记

还记得某位大牛说过编程不是一种重复的枯燥的敲击键盘,而是一门艺术,体现在灵活多变的应用背后.鄙人认为,无论什么事只要用心去做,做出来的结果绝对是艺术品,至少对自己而言,因为你在里面付出了大量的心血和汗水,这是他们化为的结晶. 先自我介绍一下,本人硕一在读,国内某名院在读,(不读博),打算出来找一门IT技术活生存,专业涉及机器视觉.算法.图像分析.编程,同行者共勉! 编程规范,是码农都默认或遵守的一套规范.首先来谈谈--匈牙利命名法,它是软件编程中多数程序所遵守的一套变量命名规范,使得阅读代码者能

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

Unix编程艺术读书笔记(一)

 Unix编程艺术读书笔记(一)这本书是一位面试官告诉我的,很感谢他的指点,关于面试的详细过程,我想以后再写,当然我也意识到自己的不足,一方面是面试的技巧,还有一方面就是学习的方法.阅读这本书很享受,加上之前的积累,一些疑惑,还有一些基础的不足,在这本书里找到了归宿. 下面,一起来享受这本书的精华吧 Unix诞生与1969年,那时候我们还在闹文革吧,可一个可以改变21世纪甚至更远的未来的操作系统问世,至少现在的Linux是基于Unix的设计哲学.Unix是唯一一个在不同种类的计算机,众多厂商

写给大家看的编程规范

(本文参加 2014 CSDN博文大赛,谢谢.) [文章摘要] "没有规矩,不成方圆",在实际的软件开发项目中,做任何事情都不是随心所欲的,我们编写代码需要遵守项目组约定的编程规范.很遗憾,在学校的计算机课程中,重在教导学生实现一定的程序功能,对程序的编写规范很少提及,这也就导致了从学校毕业踏上工作岗位之后一段艰辛的学习过程. 本文根据自身的软件开发实践,对实际的软件开发项目中编写C语言和SQL语言程序时所需遵守的规范进行了详细的介绍,旨在让广大即将从事软件开发工作的程序员们懂得编程规

国内大型的内部 C# 编程规范

C#编程规范 改动记录 Ver. No 发版日期 编制人 批准人 改动的说明 目   录 1    前言...4 1.1     參考资料...4 1.2     词汇表...4 2    命名指南...4 2.1     大写样式...4 2.1.1      Pascal 大写和小写...5 2.1.2      Camel 大写和小写...5 2.1.3      大写...5 2.2     区分大写和小写...6 2.3     缩写...7 2.4     措词...7 2.5   

国内大公司内部的 C# 编程规范

C#编程规范 修改记录 Ver. No 发版日期 编制人 批准人 修改的说明 目   录 1    前言...4 1.1     参考资料...4 1.2     词汇表...4 2    命名指南...4 2.1     大写样式...4 2.1.1      Pascal 大小写...5 2.1.2      Camel 大小写...5 2.1.3      大写...5 2.2     区分大小写...6 2.3     缩写...7 2.4     措词...7 2.5     命名Na

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

《C#高级编程》读书笔记

<C#高级编程>读书笔记 C#类型的取值范围 名称 CTS类型 说明 范围 sbyte System.SByte 8位有符号的整数 -128~127(−27−27~27−127−1) short System.Int16 16位有符号的整数 -32 768~32 767(−215−215~215−1215−1) int System.Int32 32位有符号的整数 -2 147 483 648~2 147 483 647(−231−231~231−1231−1) long System.Int

Windows客户端C/C++编程规范“建议”——函数

1 函数 1.1 代码行数控制在80行及以内 等级:[要求] 说明:每个函数的代码行数控制应该控制在80行以内.如果超过这个限制函数内部逻辑一般可以拆分.如果试图超过这个标准,请列出理由.但理由不包含如下: 无法拆分. 流程内部逻辑复杂,无需拆分,即使拆分了,拆分的函数也不会被其他地方用到.(解释:拆分可以减少代码行数,提炼后的函数可以方便读者快速理解函数逻辑并定位问题.) 1.2 代码列数控制在100字符及以内 等级:[要求] 说明:每行代码不可以超过100字符.如果超过这个字符数,代码的美观