- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5 变量、结构
5-1:去掉没必要的公共变量。
说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。
5-2:仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。如果可以,尽量使用无符号数,不要使用有符号数,这会增加CPU处理的负担,也会增加存储器的开销,可能在高速CPU上用户没有感觉,但是如果移植到一些低成本的低速CPU上,就可能有问题,而且这是一个程序员应该养成的良好习惯,尤其是针对嵌入式系统设计。
说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。
5-3:明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。
说明:明确过程操作变量的关系后,将有利于程序的进一步优化、单元测试、系统联调以及代码维护等。这种关系的说明可在注释或文档中描述。
示例:在源文件中,可按如下注释形式说明。
RELATION System_Init Input_Rec Print_Rec Stat_Score
Student Create Modify Access Access
Score Create Modify Access Access, Modify
注:RELATION为操作关系;System_Init、Input_Rec、Print_Rec、Stat_Score为四个不同的函数;Student、Score为两个全局变量;Create表示创建,Modify表示修改,Access表示访问。
其中,函数Input_Rec、Stat_Score都可修改变量Score,故此变量将引起函数间较大的耦合,并可能增加代码测试、维护的难度。
5-4:当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。必须检查变量的类型,不要指望编译器提供的自动变量转换。
说明:对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定性。
5-5:防止局部变量与公共变量同名。
说明:若使用了较好的命名规则,那么此问题可自动消除。
5-6:严禁使用未经初始化的变量作为右值。
说明:特别是在C/C++中引用未经赋值的指针,经常会引起系统崩溃。
5-1:构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。
说明:降低公共变量耦合度。
5-2:使用严格形式定义的、可移植的数据类型,尽量不要使用与具体硬件或软件环境关系密切的变量。
说明:使用标准的数据类型,有利于程序的移植。
示例:如下例子(在DOS下BC3.1环境中),在移植时可能产生问题。
void main()
{
register int index; // 寄存器变量
_AX = 0x4000; // _AX是BC3.1提供的寄存器“伪变量”
... // program code
}
5-3:结构的功能要单一,是针对一种事务的抽象。
说明:设计结构时应力争使结构代表一种现实事务的抽象,而不是同时代表多种。结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中。
示例:如下结构不太清晰、合理。
typedef struct STUDENT_STRU
{
unsigned char name[8]; /* students name */
unsigned char age; /* students age */
unsigned char sex; /* students sex, as follows */
/* 0 - FEMALE; 1 - MALE */
unsigned char
teacher_name[8]; /* the student teachers name */
unisgned char
teacher_sex; /* his teacher sex */
} STUDENT;
若改为如下,可能更合理些。
typedef struct TEACHER_STRU
{
unsigned char name[8]; /* teacher name */
unisgned char sex; /* teacher sex, as follows */
您可能关注的文档
- 2010年度8月全省信用卡社会发卡试题答案.doc
- 130510695第3课解方程12.ppt
- 2017年1228视频会议系统工作原理.ppt
- 2017年学年高中物理课件 3.ppt
- 2010年度安徽省初中毕业生学业考试物理预测模拟试题一.doc
- 1财政及金融作业.doc
- 1第一看致歉与提醒.doc
- 2010年度备考模拟题选带电粒子在复合场中运动.doc
- 120412高三物理理综周考物理部分试卷讲评课件.ppt
- 2010年度高考试题——理综重庆卷精校版含答案.doc
- 刑法自学考试试题及答案.doc
- (最新)25年秋人教版六年级数学上册分数乘法第6课时 分数混合运算.pptx
- (最新)25年秋人教版五年级数学上册简易方程13.实际问题与方程(2).pptx
- (最新)25年秋人教版六年级数学上册分数乘法整理和复习.pptx
- (最新)25年秋人教版六年级数学上册分数乘法第2课时 分数乘整数(2).pptx
- (最新)25年秋人教版六年级数学上册分数乘法练习课(第1-4课时).pptx
- (最新)25年秋人教版五年级数学上册总复习4.位置 可能性 植树问题.pptx
- (最新)25年秋人教版六年级数学上册分数乘法第1课时 分数乘整数(1).pptx
- 2023年绵阳市公务员考试行测真题(含答案详解).docx
- 2023年江门市公务员考试行测真题及答案详解(有一套).docx
文档评论(0)