第一:使用数值时的建议
1:避免使用魔数magic number
2:如果需要可以使用硬编码的0和1
3:预防除零错误
4:使类型转变得明显容易出错误
5:避免混合类型比较
6: 注意编译器的警告
第二:使用整数时注意事项
1:检查整数除法
2:检查整数溢出
3:检查中间结果溢出
第三:浮点数
1:避免数量级相差巨大的数之间的加减运算
2:避免等量判断
3:处理舍入误差的问题
(1)使用一种变量更高的变量类型
(2)换用二进制编码的十进制BCD变量
(3)把浮点变量变成整形变量
4:检查语言和函数库对特定数据类型的支持
第四:字符和字符串
1:避免使用神秘数字和神秘字符串
2:避免off-by-one错误
3:了解你的语言和开发环境是如何支持unicode的
4:在程序生命周期中尽早决定国际化、本地化策略
5:如果你知道只需要支持一种文字的语言,请考虑使用ISO8859字符集
6:如果你需要支持多种语言,请使用unicode
7:采用某种一致的字符串类型转换策略
C语言中的字符串
避免常见错误的方法
1:注意字符串指针和字符数组之间的差异
(1)警惕任何包含字符串和符号的表达式
(2)通过命名规则区分变量时字符数组还是字符串指针
2:把C-style字符串的长度声明为CONSTANT+1
3:用null初始化字符串以避免没有终端的字符串
4:用字符数组取代c中的指针
5:用strncpy()取代strcpy()以避免无终端的字符串
第五:Boolean 变量
1:用布尔变量对程序加以文档说明
2:用布尔变量来简化复杂的判断
3:如果需要的话,创建你自己的布尔类型
第六:枚举类型
1:用枚举类型来提高可读性
2:用枚举类型来提以高可靠性
3:用枚举类型来简化修改
4:将枚举类型作为布尔变量的替换方案
5:检测非法的数值
6:定义出枚举的第一项和最后一项,以便用于循环边界
7:把枚举类型的第一个元素留作非法值
8:明确定义项目代码编写标准中第一个和最后一个元素的使用规则,并且在使用时保持一致
第七:具名常量:named constants----一旦赋值之后就不能改变的变量叫具名常量
1:在数据声明中使用具名常量
2:避免使用文字量,即使是安全的
3:用具有适当作用域的变量或类来模拟具名常量
4:统一地使用具名常量
第八:数组:arrays
1:确认所有的数组下标都没有超出数组的边界
2:考虑用容器来取代数组,或者将数组作为顺序化结构来处理
3:检查数组的边界点
4:如果数组是多维的,确认下标的使用顺序是正确的
5:提防下标串话
6:在C中结合ARRAY_LENGTH()宏来使用数组
第九:结构体
1:使用结构体明确数据关系
2:使用结构简化对数据块的操作
3:用结构体简化参数列表
4:用结构体来减少维护
第十:指针
使用指针的一般技巧
1:把指针操作限制在子程序或者类里面
2:同时声明和定义指针
3:在于指针分配相同的作用域中删除指针
4:在使用指针之前检查指针
5:先检查指针所引用的变量在使用它
6:用狗牌字段来检测毁坏的内存 :::狗牌字段是指你加入结构体内的一个仅仅用与检测错误的字段。
7:增加明显的冗余
8:用额外的指针变量来提高代码的清晰度
9:简化复杂的指针复杂度
10:多画画图更有利于理解
11:按正确的顺序删除链表中的指针
12:分配一块保留的内存后背区域
13:粉碎垃圾数据
14:在删除或者释放指针之后把它们设为空值
15:在删除之前检查非法指针
16:跟踪指针的分配情况
17:编写覆盖子程序,集中实现避免指针问题的策略
18:采用非指针的技术
C++指针
1:理解引用和指针之间的区别:引用总是引用一个对象而指针则可以指向空值;引用所指向的对象在该引用初始化之后不能改变。
2:把指针用于“按引用传参”把const引用用于“按值传参”参数
3:使用auto_ptr来释放内存
4:灵活使用智能指针
C指针
1:使用显示指针类型而不是默认类型
2:避免强制类型转换
3:遵循参数传递的型号规则
4:在内存分配中使用sizeof()确定变量的大小
阅读(1163) | 评论(0) | 转发(0) |