高质量的C++编程指南总结(一):文件结构、程序版式、命名规则、表达式和基本语句

在此非常感谢林锐博士的《高质量C++/C编程指南》一文,帮我解决了很多疑惑。现在将文中的一些知识总结一下,以备后用。

第一章 文件的结构

C++/C程序由用于声明的头文件和用于实现的定义文件组成。

头文件由三部分组成:开头的版权和版本声明、预处理块、函数和类声明等。定义文件亦由三部分组成:开头的版权和版本声明、对一些头文件的引用、程序的实现体。头文件的作用:1、通过头文件来调用库功能;2、头文件能加强类型安全检查。

程序的目录结构中,通常将头文件和定义文件保存到不同的目录中,若有些头文件是私有的,不会被其他用户程序直接引用,则可将其与定义文件放于同一目录。


第二章 程序的版式

适当添加空行,每行代码只做一件事情,尽可能在定义变量时候初始化变量。

关键字如if、for、while等之后应当加空格,“,”、”;“之后也要适当加上空格。

分界符”{ }“应独占一行且位于同一列;长行要适当拆分,长表达式要在低优先级操作符处拆分成新行,操作符放于新行之首,适当缩进。

修饰符*和&应当靠近变量名,防止变量被误解。

适当添加注释,注意注释是对代码的提示,而不是文档,不可喧宾夺主,花样太多;边改代码边改注释,没用的注释要删除,避免在注释中使用缩写;注释位置在代码的上方或者右方,若代码较长,特别是有多重嵌套时,应当在一些段落的结束处加注释以便阅读。

对于类的版式,将private类型的数据写在前面的设计是“以数据为中心”,重点关注类的内部结构;将public类型的函数写在前面的设计是”以行为为中心“,重点关注类能提供什么样的接口。文章建议采用”以行为为中心“的方式,方便自己设计类时思路清晰,因为别人关注的是类能提供的接口,而不是它的数据成员。


第三章 命名规则

共性规则是:标识符应当直观且可拼读,即望文知意;长度符合“min-Length&&max-information”原则;尽量与采用的操作系统或开发工具保持一致;不要出现仅靠大小写区分的相似标识符;不要出现名字相同的局部变量和全局变量,尽管二者作用域不同,但容易使人误解;变量名字使用“名词”或者”形容词+名词“,全局函数名字使用”动词“或”动词+名词“,类的成员函数应只使用“动词”。

“匈牙利”命名规则:在变量和函数名中加入前缀以增进人们对程序的理解,如字符变量以ch为前缀,指针变量加p前缀。

建议的附加规则:类名和函数名用大写字母开头,变量和参数用小写字母开头,常量全部大写并用下划线分割单词,类的数据成员加前缀m_,增加反映软件性质的前缀。


第四章 表达式和基本语句

运算符优先级,一元运算符+-*的优先级高于对应的二元运算符。


若表达式中的运算符较多,用括号来确定操作顺序;适当使用复合表达式。

if语句的使用:

布尔变量与零值比较时,宜用if(flag)和if(!flag),不可直接与TRUE、FALSE、1、0进行比较。

整型变量与零值比较时,宜直接用"=="和"!="和0比较。

浮点变量与零值比较时,不可直接用"=="和"!="与任何数字比较,应该设法转化成“>=”或“<=”的形式,并控制精度。

指针变量与零值比较时,应当直接用"=="和"!="与NULL比较,最好使用if(NULL==p)的方式,以免错误赋值。

循环语句的使用:

在多重循环中,若有可能,应当将最长的循环放在最内层,最短的循环放在最外层,减少CPU跨切循环层的次数;若循环体内存在逻辑判断,且循环次数不是很大,宜将逻辑判断移到循环体的外面进行分别循环。

不要在for循环体内修改循环变量,防止循环失去控制,循环控制变量宜采用“半开半闭区间”的写法。

switch语句中,在每个case语句后面都不要忘记加break;亦不要忘记default分支。

goto语句要少用、慎用,担不是禁用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值