您的位置:首页 > 编程语言 > C语言/C++

c/c++高质量编程(林锐)读书笔记二

2012-03-15 15:17 260 查看

1.2 头文件的结构

头文件由三部分内容组成:

(1)头文件开头处的版权和版本声明(参见示例1-1)。

(2)预处理块。

(3)函数和类结构声明等。

假设头文件名称为graphics.h,头文件的结构参见示例1-2。

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

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

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

【建议1-2-1】头文件中只存放“声明”而不存放“定义”

在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。

【建议1-2-2】不提倡使用全局变量,尽量不要在头文件中出现象extern int value 这类声明。

【规则3-2-1】类名和函数名用大写字母开头的单词组合而成。

【规则3-2-3】常量全用大写的字母,用下划线分割单词。

【规则3-2-5】如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

【规则3-2-6】类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

【建议4-5-1】建议for语句的循环控制变量的取值采用“半开半闭区间”写法。

4.6 switch语句

有了if语句为什么还要switch语句?

switch是多分支选择语句,而if语句只有两个分支可供选择。虽然可以用嵌套的if语句来实现多分支选择,但那样的程序冗长难读。这是switch语句存在的理由。

switch语句的基本格式是:

switch (variable)

{

case value1 : …

break;

case value2 : …

break;



default : …

break;

}

【规则4-6-1】每个case语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。

【规则4-6-2】不要忘记最后那个default分支。即使程序真的不需要default处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default处理。

5.1 为什么需要常量

如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?

(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。

(2) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。

(3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。

5.2 const 与 #define的比较

C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:

(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。

(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

【规则6-3-2】在函数体的“出口处”,对return语句的正确性和效率进行检查。

return语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: