自建数据类型的准则:
1、建立具有面向功能名称的类型
2、要避免使用含有已定义变量类型的名称
3、避免使用已定义类型
4、不要对已定义类型重新定义
5、定义替换类型以增强移植性
6、使用其他类型来建立新类型如何避免初始化错误:
1、检查输入参数的有效性
2、在使用变量的位置附近对其进行初始化
3、要特别注意计数器和累加器
4、查找需要重新进行初始化的地方
5、对命名常量只初始化一次,用可执行代码初始化变量
6、按照所说明的对每个变量进行初始化
7、利用编译程序的警告信息
8、设置编译程序使其自动初始化所有变量
9、使用内存存取检查程序来查找无效的指针
10、在程序开始初始化工作内存
作用域的常见准则:
1、尽可能减小作用域
2、把对某一变量的引用集中放置
变量功能单一性:
1、应使每一个变量只具有一个功能
2、避免使用具有隐含意义的变量
3、保证所有说明的变量
使用全局数据的理由:
1、保存全局数值,有时候需要在整个程序中都要用到某些数据
2、代替命名常量
3、方便常用数据的使用
4、消除“穿梭”数据(有时候把某个数据传入一个子程序中仅仅是为了使他可以把这一数据传入另一个子程序中,当这个传递链中的某个子程序并没有用到这个数据时,这个数据就叫做穿梭数据)
降低使用全局数据的危险:
1、先使所有变量都成为局部的,完后再根据需要把其中某一些改为全局变量
2、区分全局和模块变量
3、建立一个清楚标出所有全局变量的注释表
4、使用加锁技术来控制对全局变量的存取
用存取子程序来代替全局数据:
1、优点:可以对数据进行集中控制;可以把所有对数据的引用分隔开;可以获得信息隐藏;存取子程序很容易转换为抽象数据类型。
2、要求所有子程序来对数据进行存取操作
3、不要把所有的全局数据都放入同一个模块中
4、在存取子程序中建立某种程度的抽象
5、把对数据的所有存取保持在同一抽象水平上
数组:
1、确保所有的数组下标都没有越界
2、把数组当作顺序性结构
3、检查数组边界
4、警惕下标的错误交叉
5、使数组的长度留有一定裕度
6、在C中使用ARRAY_LENGTH()宏来处理数组
指针:
1、将指针操作独立于子程序中
2、使用之前进行检查
3、使用标记字段来查找错误内存
4、使用显示冗余技术
5、释放指针后,把它设为NULL
6、使用额外的指针变量以增加清晰性
7、简化复杂的指针表达式
8、编写跟踪指针存储单元的子程序
9、画图
10、编写输出指针地址的子程序
11、应使用显式指针类型而不是缺省类型
12、避免强制类型转换
13、遵守参数传递的星号规则
14、使用sizeof()来确定内存存储单元中变量的规模