- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内容大纲
专题一 模块化程序设计与递归函数
1.1 编码规范
1.2 模块化开发
1.3 递归函数
专题二 结构/链表与堆栈
专题三 图形程序设计基础
专题四 查找/排序与算法分析
课程综合总结
第2章 学习目标
认识把单个程序分为多个单独模块的重要性
理解在一个模块里需要在多个函数调用之间保存状态信息
能够使用全局变量来表示在跨函数调用中所需维护的状态信息
认识到过度使用全局变量的危险性
能够使用static关键字来保证一个模块中的函数和全局变量的私有性
2.1 编码规范
什么是高质量的程序
正确性:语法正确、功能正确。使之可行
可读性:通用的、必需的习惯用语和模式可以使代码更加容易理解。使之优雅
可维护性:程序应对变化的能力。使之优化
……
《C编码规范》
《C本学期作业代码自检规范》
不直接使用基础类型,应该使用指示了大小和符号的typedef以代替基本数据类型。
比如,《MISRA—C-2008工业标准》建议为所有基本数值类型和字符类型使用如下的typedef。对于32位计算机,它们是:
若干C代码规范
typedef char char_t;
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef signed long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long uint64_t;
typedef float float32_t;
typedef double float64_t;
typedef long double float128_t;
变量、函数的命名符合编码规范
Pascal命名规则:当变量名和函数名称是由二个或二个以上单字连结在一起,而构成的唯一识别字时,第一个单字首字母采用大写字母,后续单字的首字母亦用大写字母,例如:FirstName、LastName。
若干C代码规范
小心使用全局变量
多线程代码中非常数全局变量是禁止使用的。内建类型的全局变量是允许的,但使用时务必三思。
用访问器子程序来取代全局数据
把数据隐藏到模块里面。用static关键字来定义该数据,写出可以read读、write和initialize初始化该数据的子程序来。要求模块外部的代码使用该访问器子程序来访问该数据,而不是直接操作它。
若干C代码规范
应用自顶向下的设计
把一个相对复杂的功能,划分成相对独立的子功能,直到每个子功能相对简单。每个子功能用一个函数来实现。
一个函数实现一个简单的功能
编程中:如果一个函数的代码行数很大(比如150以上),最好的方法是把它分成几个相互调用的小函数来完成任务。
一个源(实现)文件包含功能相对集中的若干函数定义
如果一个源文件中包含很多个函数(比如50个以上),最好的方法就是把程序再分成几个更小的源文件。每个源文件都包含一组功能相关的函数
2.2 模块化开发
头文件:为了方便模块中的函数被别人调用,专门形成一个头文件,内容是函数声明(函数原型要求)、常量定义等。如:Utility.h
正确使用头文件可令代码在可读性、文件大小和性能上大为改观。
头文件的使用:如果一个源文件如:Utility.c中,要使用Utility.h中声明的函数、类型和具名符号等,在该源文件开始处:
#include “Utility.h”
#include stdio.h
头文件
模块
模块:较小的源文件称为模块,包含main函数的模块叫主模块(main module)。
独立编译单元:Utility.cUtility.obj
Example:通信管理数据库系统
好的函数名字:描述函数所做的所有事情。如:checkOrderInfo(...)、calcMonthlyRevenues(...)
内聚性高,一个函数只实现一个功能
函数参数:
按照输入-修改-输出的顺序排列参数
考虑对参数采用某种表示输入、修改、输出的命名规则
使用所有的参数
把状态或出错变量放在最后
不要把函数的参数用作工作变量
在接口中对参数的假定加以说明
把函数的参数个数限制在大约7个以内
高质量的函数
头文件由三部分内容组成:
-头文件开头处的版权和版本声明
-预处理块
-函数、结构和枚举类型声明、外部变量声明、具名常量定义、 typedef和宏等。
头文件应该只用于声明,而不应该包含或生成占据存储空间的变量或函数
文档评论(0)