




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中帝威C51编程规范(2010.11.02)在项目的开发中,同一个项目的不同模块可能涉及不同成员来开发。养成一个良好的编程习惯,各成员按照同一个规范来开发项目,有助于后期工程的整合及彼此间意见的交流。在此制定此规范,供各位进行参考。 一 标志符命名法 变量: 变量的定义由两部分组成,用 “ _ ” 分开,前半部分说明作用域,后半部分用小写字母说明类型,之后是一个大写字母开头的变量名称,如下: (作用域)_ (数据类型)(大写字母开始的名称)作用域: 1、全局变量: g ; 2、模块变量(在一个模块中公用的变量): m ; 3、局部变量无此信息。数据类型:1、字符:ch; 2、无符号字符uc; 3、整型:i; 4、无符号整型: ui;5、长整型:l; 6、无符号长整型:ul; 7、浮点数:f; 8、无符号浮点数:uf;9、位变量:b; 10:指针变量:p。【规则1-1】命名应当直观且可以拼读,可望文知意,便于记忆和阅读。标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。【规则1-2】当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如:int iCurrentValue;int iCurrentState;或者每个单词之间用下划线分割开,比如:int iCurrent_Value;int iCurrent_State;这样的名字看起来比较清晰,远比一长串字符好得多。【规则1-3】对在多个文件之间共同使用的全局变量或函数要加范围限定符(建议使用模块名(缩写)作为范围限定符)。比如,在key.c中定义一个全局变量:unsigned char g_ucKeyNum; /按下的键号码。Unsigned char g_ucKeyState;/【规则1-4】程序中不要出现仅靠大小写区分的相似的标识符。 例如:int x, X; /* 变量x 与X 容易混淆*/ void foo(int y); /* 函数foo 与FOO 容易混淆*/void FOO(float y);用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。例如:int MinValue;int MaxValue;int MinValue(void);int MaxValue(void);标识布尔型的变量或函数名称一般使用is作为前缀。例如:void isFull();注意:1 变量名的声明应该是每行一个变量,不要在一行声明多个变量。2 变量尽量在定义的时候就进行初始化。函数名:函数名应用相应文件名作为前缀。每个词的第一个字母大写。例如,所有文件KEY.C中的函数和所有VIDEO.C中的函数都可以定义成如下形式:补充:单词之间也可加下划线割开。KEY.CKeyGetChar()KeyGetLine()或者Key_Get_Char()Key_Get_Line()VIDEO.CVideoGetAttr()VideoPutChar()或者Video_Get_Attr()Video_Put_Char()二 定义语句1常数和宏定义要用大写,相应的词用下划线分开。例如:#define KEY_CR 0x0D#define KEY_START 0x01三 程序版式3.1 空行(4条规则)空行起着分隔程序段落的作用,空行得体将使程序的布局更加清晰。空行不会浪费内存,所以不要舍不得用空行。【规则3-1-1】在函数内部局部变量定义结束之后处理语句之前要加空行。【规则3-1-2】在每个函数定义结束之后都要加空行。参见示例3-1(a)。【规则3-1-3】函数返回语句和其他语句之间使用空行分开。【规则3-1-4】在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例3-1(b)。/-xxx BEGIN /Start-/ 空行void Function1( ) / 空行void Function2( ) / 空行void Function3( ) / 空行while( condition )statement1;/ 空行if ( condition )statement2;elsestatement3;/ 空行statement4;例如:示例3-1(a) 函数之间的空行 示例3-1(b) 函数内部的空行3.2 代码行(5条规则1条建议)【规则3-2-1】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便写注释。【规则3-2-2】if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加表明是一个语句块。【规则3-2-3】一对花括号要单独各占一行。但是在do-while、struct和union及其后有;的除外,要同在一行。【规则3-2-4】switch语句中的每个case语句各占一行,当某个case语句不需要break语句最好加注释声明。【规则3-2-5】并列的语句行应该按照字母顺序排序,如变量定义和switch中的case语句等。do while(i0);【建议3-2-1】尽可能在定义变量的同时初始化该变量(就近原则),如果变量的引用处和其定义处相隔较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如:int width=20; /* 定义并初绐化width*/int height=20; /* 定义并初绐化height*/int depth=20; /* 定义并初绐化depth*/风格良好的代码行风格不良的代码行int width; /* 宽度*/int height; /* 高度*/int depth; /* 深度*/int width, height, depth; /* 宽度高度深度*/x=a+b;y=c+d;z=e+f;x=a+b;y=c+d;z=e+f;if( width height )dosomething();Elseif( width =”、“=”、“+”、“*”、“%”、“&”、“|”、“”这类操作符前后不加空格。 例如:big.bar, pFile-bar, bigbar【建议3-3-1】对于表达式较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格.例如:for( i=0; i10; i+ )和if( (a=b) & (c= 2000 )if( (a=b) & (c=2000)if(a=b&c=d)for( i=0; i10; i+ )for(i=0;i10;i+) for (i = 0; i 10; i +)x = a b ? a : b;x=aFunction();array 5 = 0;a.Function();b - Function();3.4 对齐(4条规则)【规则3-4-1】程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左对齐。【规则3-4-2】水平缩进每次使用四个空格即可(定义一个tab键为四个空格。有的要求缩进两个空格)。【规则3-4-3】同属于一个语句块的代码对齐。【规则3-4-4】 之内的代码块在右边一个tab键处左对齐。风格良好的对齐风格不良的对齐void Function(int x) program codevoid Function(int x)program codeif( condition ) program codeelse program codeif(condition)program codeelse program codefor( initialization; condition; update ) program codefor(initialization; condition; update)program codewhile( condition ) program codewhile(condition)program code如果出现嵌套的,则使用缩进对齐,如: 3.5 长行拆分(2条规则)【规则3-5-1】代码行最大长度宜控制在70至80个字符以内。代码行不宜过长,否则不便于阅读,也不便于打印。【规则3-5-2】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。if( (very_longer_variable1 = very_longer_variable12 )& (very_longer_variable3 = very_longer_variable14)& (very_longer_variable5 1 ).#endif【规则3-7-11】行末注释最好对齐。【规则3-7-12】应对包含的头文件进行行末注释。【建议3-7-1】函数的功能要单一,不要设计功能过于复杂的函数。【建议3-7-2】经常使用的重复代码用函数来代替。【建议3-7-3】函数体的规模要小,尽量控制在50 行代码之内。【建议3-7-4】尽量避免函数带有“记忆”功能。相同的输入应当产生相同的输出。函数的static 局部变量是函数的“记忆”存储器。建议尽量少用static 局部变量,除非必需。【建议3-7-5】不仅要检查输入参数的有效性,还要检查通过其它途径进入函数体内的变量的有效性。例如全局变量、文件句柄等。【建议3-7-6】用于出错处理的返回值一定要清楚,让使用者不容易忽视或误解错误情况。【建议3-7-7】不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。【建议3-7-8】以提高程序的全局效率为主,提高局部效率为辅。【建议3-7-9】在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。【建议3-7-10】先优化数据结构和算法,再优化执行代码。【建议3-7-11】有时候时间效率和空间效率可能对立,此时应当分析哪个更重要,做出适当的折衷。例如多花费一些内存来提高性能等。【建议3-7-12】不要追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码。【建议3-7-13】两函数之间可用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国桶装水行业市场深度调研及发展趋势与投资前景预测研究报告
- 2025-2030中国有机芋头行业市场深度调研及发展趋势与投资战略研究报告
- 5G赋能艺术品展览-洞察阐释
- 2025年幼儿园春季卫生保健知识竞赛计划
- 社交媒体与图书馆读者互动模式-洞察阐释
- iOS内存管理最佳实践-洞察阐释
- 深度学习在恶意软件检测中的应用-洞察阐释
- 肇庆市端州区科学技术协会招募人员考试真题2024
- 响应式系统设计-洞察阐释
- 妇科多选正序复习测试卷附答案
- GB/T 21618-2008危险品易燃固体燃烧速率试验方法
- 西安市非学历培训机构公示表
- QTZ1000塔机总体方案和平头式平衡臂结构设计及起升机构校核计算
- 盖梁穿心钢棒法受力分析计算书
- T∕CAME 27-2021 医院物流传输系统设计与施工规范
- YY∕T 1849-2022 重组胶原蛋白
- 三平寺签诗解全75首上
- (高清版)《预应力筋用锚具、夹具和连接器应用技术规程》JGJ85-2010
- 后张法预应力空心板梁施工方案
- 师德师风年度考核表
- 健康险产说会课件
评论
0/150
提交评论