使用抽象数据类型优点(ADT):
可以隐藏实现细节
把改动的影响限制在局部
更容易改进性能
减少修改时犯错误的可能性
使程序成为自说明的
避免了在程序中四处传递数据的麻烦
准则:
把典型的计算机专业数据结构构建为抽象数据类型
把常见的目标如文件等处理为抽象数据类型
即使是简单的问题也应该考虑使用抽象数据类型
可以提供一对互补的操作
应相对ADT所存储的介质独立地引用它
组织顺序式程序代码检查表:
把语句间的以阿里关系表示的很清楚吗
子程序名是否把依赖关系表示的很清楚
子程序的参数是否把依赖关系表示的很清楚
若代码的依赖关系不清楚,用注释注明了吗
代码能从上读到下吗
变量的出现靠的很近吗(从跨度和存活时间来考虑)
是否把相关语句组织在一起
是否把相对独立的各相关语句写成子程序了
C语言中与0的比较:
隐含地址和逻辑地址比较:while(!Done)
数与0比较:while(Balance != 0)
字符与结束符(‘\0’):while(*CharPtr != ‘0’)
把指针与NULL空指针比较:while(BufferPtr != NULL)
C语言中所包含源文件的标准顺序:
关于文件描述的注释
包含文件
常量定义
宏函数定义
类型定义
全局变量及输入函数
全局变量及输出函数
文件内部变量及函数
子程序:
每一个子程序名都明确地描述了要做什么事了吗
每一个子程序详细定义任务吗
程序会从它们的子程序中获益吗
每个子程序的接口处明确吗
数据组织:
附件变量在需要时要清零吗
变量的引用彼此间很接近吗
数据结构简化会导致降低其灵活性吗
复杂的数据存取是通过子程序来完成的吗
设计:
代码直观吗,它的编写巧妙吗
实现细节可能隐去了吗
程序编写是立足于问题域而不是计算机科学或语言结构域吗、
调试工具的作用:
编译程序警告信息
给出程序框架
文件比较程序(比较源代码文件的不同版本)
执行显示程序
交互调试程序,软件和硬件
测试工具的作用:
给出程序框架
结果比较(比较数据文件、监视输出及屏幕图像)
自动测试生成程序
记录测试条件及重复功能
区域监视器(逻辑分析及执行显示器)
符号调试程序
系统扰乱程序(内存填充、存储器扰乱、有选择地让存储器出错、存储器存取性检查)
缺陷数据库