分享
 
 
 

《高质量C++编程指南》读书笔记(一)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

《高质量C++编程指南》是一本关于C++编程风格的指导、建议性的书,诞生已经有一年多了,初学C++,阅读此书,感觉甚好,收获很大。这本书对初学者掌握好的编码习惯有极大的帮助,对老手改进编码方式也有好处。

这里把读书笔记拿出来共享,希望对大家有帮助。

本书共11章,另前言以及参考文献,附录A,B,C建议按照原作者的意见,按照先前言,再附录,再正文的顺序阅读。

头文件:

为了防止头文件被重复引用,应当用ifndef/define/endif 结构产生预处理块。

用#include <filename.h> 格式来引用标准库的头文件(编译器从标准库目录开始搜索)。

用#include “filename.h” 格式来引用非标准库的头文件(编译器从用户的工作目录开始搜索)。

头文件中只存放“声明”而不存放“定义” 。

代码行:

在每个类声明之后、每个函数定义结束之后都要加空行。

在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。

if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。

尽可能在定义变量的同时初始化该变量(就近原则)。

空格:

关键字之后要留空格。

函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。

‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。

‘,’之后要留空格,如Function(x, y, z)。如果‘;’不是一行的结束符号,其后要留空格,如for (initialization; condition; update)。

二元操作符的前后应当加空格。一元操作符前后不加空格。

象“[]”、“.”、“->”这类操作符前后不加空格。

对齐:

程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。

{ }之内的代码块在‘{’右边数格处左对齐。

长行拆分:

代码行最大长度宜控制在70 至80 个字符以内。

长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

修饰符的位置:

应当将修饰符* 和& 紧靠变量名。

注释:

注释是对代码的“提示”,不是文档。不可喧宾夺主,太多了会让人眼花缭乱。花样要少。

边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。

注释应当准确、易懂,防止注释有二义性。

尽量避免在注释中使用缩写,特别是不常用缩写。

注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。

当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。

命名规则:

标识符应当直观且可以拼读,可望文知意,不必进行“解码”。最好采用英文单词或其组合,切忌使用汉语拼音来命名。

识符的长度应当符合“min-length && max-information”原则。

命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

程序中不要出现仅靠大小写区分的相似的标识符。

程序中不要出现标识符完全相同的局部变量和全局变量,会使人误解。

变量的名字应当使用“名词”或者“形容词+名词”。

全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。

类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。

用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

尽量避免名字中出现数字编号,除非逻辑上的确需要编号。

简单的Windows应用程序命名规则:

类名和函数名用大写字母开头的单词组合而成。

变量和参数用小写字母开头的单词组合而成。

常量全用大写的字母,用下划线分割单词。

静态变量加前缀s_(表示static)。

如果不得已需要全局变量,则使全局变量加前缀g_(表示global)

类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。

表达式和基本语句:

如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。

不要编写太复杂的复合表达式。

不要有多用途的复合表达式。

不要把程序中的复合表达式与“真正的数学表达式”混淆。

不可将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。

应当将整型变量用“==”或“!=”直接与0 比较。

不可将浮点变量用“==”或“!=”与任何数字比较。

应当将指针变量用“==”或“!=”与NULL 比较。

不可在for 循环体内修改循环变量,防止for 循环失去控制。

每个case 语句的结尾不要忘了加

break,否则将导致多个分支重叠(除非有意使多个分支重叠)。

不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留。

常量:

在C++ 程序中只使用const 常量而不使用宏常量(#define)。

需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。

如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。

函数设计:

参数的书写要完整,如果函数没有参数,则用void 填充。

如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。

避免函数有太多的参数,参数个数尽量控制在5 个以内。

不要省略返回值的类型。

函数名字与返回值类型在语义上不可冲突。

不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而错误标志用return 语句返回。

有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。

在函数体的“入口处”,对参数的有效性进行检查。

在函数体的“出口处”,对return 语句的正确性和效率进行检查。

(1)return 语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。

(2)要搞清楚返回的究竟是“值”、“指针”还是“引用”

(3)如果函数返回值是一个对象,要考虑return 语句的效率。

函数的功能要单一,不要设计多用途的函数。

函数体的规模要小,尽量控制在50 行代码之内。

尽量避免函数带有“记忆”功能。相同的输入应当产生相同的输出。

用于出错处理的返回值一定要清楚,让使用者不容易忽视或误解错误情况。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有