目录: 12.1 数值概论
12.2整数
12.3浮点数
12.4 字符和字符串
12.5布尔变量
12.6枚举类型
12.7具名常量
12.8数组
12.9创建你自己的类型
12.1 数值概论
基本数据类型是组成数据的块
一 、避免使用神秘数值
二、如果需要,可以使用硬编码的0和1
三、预防除零错误
四、使类型转换变得明显
五、避免混合类型的比较
六、注意编译器的警告
12.2 整数
一、检查整数除法
二、检查整数溢出
三、检查中间结果溢出
12.3 浮点数
一、避免数量级相差巨大的数之间的加减运算
二、避免等量判断
三、处理舍入误差问题:使用精度更高的数值进行计算
四、检查语言和函数库对特定数据类型的支持
12.4字符和字符串
一、避免使用神秘字符和神秘字符串
二、避免 off-by-one错误
三、了解你的语言和开发环境是如何支持Unicode的
四、 在程序生命期中尽早决定国际化、本地化策略
五、如果你知道只需要支持一种文字的语言,请考虑使用ISO8895字符集
六、如果你需要支持多种语言,请使用Unicode
七、 采用某种一致的字符串类型转换策略
C语言中的字符串
八、注意字符串指针和字符数组之间的差异
九、 把C—style字符串的长度声明为CONSTANT+1
十、用null 初始化字符串以避免无结束符的字符串
十一、用字符数组取代C中的指针
十二、 用strncpy()取代 strcpy以避免无结束符的字符串
12.5 布尔变量
一、用布尔变量对程序加以文档说明
二、用布尔变量来简化复杂的判断
三、如果需要的话,创建你自己的布尔类型
12.6枚举类型
一、用枚举类型来提高可读性
二、用枚举类型提高可靠性
三、 用枚举类型来简化修改
四、将枚举类型作为布尔变量的替代方案
五、检查非法数值
六、定义出枚举的第一项和最后一项,以便用于循环边界
七、把枚举类型的第一个元素留作非法值
八、明确定义项目代码编写标准中第一个和最后一个元素的使用规则,并且在使用时保持一致
九、警惕给枚举元素明确赋值而带来的失误
12.7 具名常量
一、数据声明中使用具名常量
二、避免使用文字量,即使是安全的
三、用具有适当作用域的变量或类来模拟具名常量
四、统一地使用具名常量
12.8 数组
一、确认所有的数组下标都没有超出数组的边界
二、考虑用容器(集合、栈、队列)来取代数组,或者将数组作为顺序化结构来处理
三、检查数组的边界点
四、如果数组是多维的,确认下标的使用顺序是正确的
五、提防下标串话
六在C中结合ARRAY_LENGTH()宏来使用数组
12.9创建你自己的类型
原则:1、给所创建的类型取功能导向的名字
2、避免使用预定义类型
3、不要重定义一个预定义的类型
4、定义替代类型以便于移植