Lect_专题一、模块化程序设计与递归函数.pptxVIP

  • 5
  • 0
  • 约5.34千字
  • 约 46页
  • 2019-01-27 发布于浙江
  • 举报

Lect_专题一、模块化程序设计与递归函数.pptx

内容大纲;第2章 学习目标;2.1 编码规范;不直接使用基础类型,应该使用指示了大小和符号的typedef以代替基本数据类型。 比如,《MISRA—C-2008工业标准》建议为所有基本数值类型和字符类型使用如下的typedef。对于32位计算机,它们是: ;变量、函数的命名符合编码规范 Pascal命名规则:当变量名和函数名称是由二个或二个以上单字连结在一起,而构成的唯一识别字时,第一个单字首字母采用大写字母,后续单字的首字母亦用大写字母,例如:FirstName、LastName。;小心使用全局变量 多线程代码中非常数全局变量是禁止使用的。内建类型的全局变量是允许的,但使用时务必三思。 用访问器子程序来取代全局数据 把数据隐藏到模块里面。用static关键字来定义该数据,写出可以read读、write和initialize初始化该数据的子程序来。要求模块外部的代码使用该访问器子程序来访问该数据,而不是直接操作它。;应用自顶向下的设计 把一个相对复杂的功能,划分成相对独立的子功能,直到每个子功能相对简单。每个子功能用一个函数来实现。 一个函数实现一个简单的功能 编程中:如果一个函数的代码行数很大(比如150以上),最好的方法是把它分成几个相互调用的小函数来完成任务。 一个源(实现)文件包含功能相对集中的若干函数定义 如果一个源文件中包含很多个函数(比如50个以上),最好的方法就是把程序再分成几个更小的源文件。每个源文件都包含一组功能相关的函数;头文件:为了方便模块中的函数被别人调用,专门形成一个头文件,内容是函数声明(函数原型要求)、常量定义等。如:Utility.h 正确使用头文件可令代码在可读性、文件大小和性能上大为改观。 头文件的使用:如果一个源文件如:Utility.c中,要使用Utility.h中声明的函数、类型和具名符号等,在该源文件开始处: #include “Utility.h” #include stdio.h;模块;好的函数名字:描述函数所做的所有事情。如:checkOrderInfo(...)、calcMonthlyRevenues(...) 内聚性高,一个函数只实现一个功能 函数参数: 按照输入-修改-输出的顺序排列参数 考虑对参数采用某种表示输入、修改、输出的命名规则 使用所有的参数 把状态或出错变量放在最后 不要把函数的参数用作工作变量 在接口中对参数的假定加以说明 把函数的参数个数限制在大约7个以内;头文件由三部分内容组成: -头文件开头处的版权和版本声明 -预处理块 -函数、结构和枚举类型声明、外部变量声明、具名常量定义、 typedef和宏等。 头文件应该只用于声明,而不应该包含或生成占据存储空间的变量或函数的定义。;所有头文件都应该使用#define 防止头文件被多重包含(multiple inclusion) 虽然函数、变量的声明都可以重复,所以同一个声明出现多次也不会影响程序的运行,但它会增加编译时间,所以重复引用头文件会使浪费编译时间;而且,当头文件中包含结构的定义、枚举定义等一些定义时,这些定义是不可以重复的,必须通过一定措施防止重复引用。;C语言条件编译;部分预处理指令 ;#define DEBUG /*此时#ifdef DEBUG为真*/ //#define DEBUG 0 //此时为假 int main() { #ifdef DEBUG ??? 代码段A; ?? #else ????? 代码段B; ?? #endif ?? 代码段C; ?? return 0; } ;当头文件第一次被包含时,它被正常处理,符号_HEADERNAME_H被定义。如果头文件被再次包含,通过条件编译,它的内容被忽略。符号_HEADERNAME_H按照被包含头文件的文件名进行取名,以避免由于其他头文件使用相同的符号而引起的冲突。;// in header.h #ifndef _HEADER_H #define _HEADER_H extern void Foo1(); /*函数声明*/ extern int a1; /*外部变量声明*/ struct A; /*前置声明*/ typedef struct ; { int i; struct A m; }B; void Foo2() //函数定义,error { } int a2; //全局变量定义,error #endif;//oneFile.c #include header.h int a1 = 0;

文档评论(0)

1亿VIP精品文档

相关文档