ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:33.94KB ,
资源ID:8028323      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8028323.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编程代码规范.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编程代码规范.docx

1、编程代码规范1. 临时变量命名规则:首字母小写,name1Name2.2. 常量命名规则:大写,NAME13. 函数命名规则:首字母大写,Name1Name2().4. 注释规范标准的函数注释格式;/=/函数名: /作者: /日期: /功能: /输入参数:/返回值: /修改记录:/=示例:/=/函数名: RecordIsExist/作者: jiangjingsong /日期: 2004-02-22/功能: 判断当前待插入或更新的记录在原表中是否已经存在/输入参数:bm (表名) 待查找的 表的名字/ zdm (字段名)在表中待查找的字段/ zdz(字段值) 需要比较的字段的值/返回值: 类型(

2、boolean)/ 返回true表示当前表中存在一条跟待插入的记录一样的记录;/ 返回false表示当前待插入的记录在表中不存在。/修改记录:/=我做C语言底层开发,积累了一些代码书写的经验供大家参考:1.C语言书写规范1.1符号命名规则1.1.1符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。命名采用匈牙利命名法。规则如下:(1)所有宏定义、枚举常数和const变量,用大写字母命名。在复合词里用下划线隔开每个词。(2)复合词中每个单词的第一个字母大写。除了规则5.1.1.1以外,避免使用下划线。(3

3、)类、类型定义和枚举型名的第一个字母大写。(4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。(5)循环变量可采用i, j, k等,不受上述规则限制。(6) 类的成员变量应采用m_开头。(7) 全局变量词头为g_ 。(8) 临时变量词头为tmp_ 。(9) 对结构体内的变量命名, 遵循变量的具体含义命名原则(10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。表 1词 头 类 型 词 头 类 型ch char l longi integer u unsignedb boolean p pointerf fl

4、oat lp long pointerd double s stringst structure sz ASCII stringby byte n short intH handle x,y 分别为x,y坐标dw DWORD fn function表 2词 头 变 量 名 词 头 变 量 名task task sig signalsb binary semaphores wd watchdogsm mutual exclusionsemaphores tm timersc counting semaphores msg messagepipe pipe例:#define ARRAY_SIZE

5、24 /*规则5.1.1.1*/int g_iFlag;class MyClass /*规则5.1.1.3*/;void someFunc( ) /*规则5.1.1.2和5.1.1.4*/.2.Q/ECC/BJ 0102001int nArrayARRAY_SIZE;unsigned char uchByte;char szName ;char *pszName = szName;(11)有些词头(如p和u)可以和其它词头组合。例:WDOG_ID wdId;WDOG_ID g_wdId; /*全局watchdog Id,故以g_开头*/1.1.2名字的长度一般不要过长或过短。过长的名字会增加工

6、作量,使程序逻辑流程变得模糊;过短的名字无法表达符号的实际意义。约定长度范围:3-31;1.2数据和函数说明1.2.1数据说明次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。说明的先后次序应固定,应按逻辑功能排序,逻辑功能块内建议采用下列顺序:整型说明、实型说明、字符说明、逻辑量说明。1.2.2如果设计了一个复杂的数据结构,应当通过注释对其变量的含义、用途进行说明。1.2.3在函数的声明中使用异常声明。如:void f() throw(toobig, toosmall, divzero);在声明一个函数时,将它所抛出的异常列出,便于函数的使用者了解可能会发生哪些异常。1.3 程序

7、注释1.3.1程序注释是程序员与日后的程序读者之间通信的重要手段之一,注释分为文件注释、函数注释和功能注释。1.3.2正规程序的注释应注意:注释行的数量占到整个源程序的1/3到1/2。1.3.3文件注释位于整个源程序的最开始部分,注释后空两行开始程序正文。它包括:程序标题。目的、功能说明。文件作者、最后修改日期等说明。例:./*(空一行)标题: Demo.c功能: 测试VxWorks的各种系统调用.说明:该程序测试各种VxWorks的系统调用函数。包括任务(taks)的创建、挂起及任务间通过信号灯实现同步,通过消息队列进行通讯。程序创建了两个任务:一个高优先级的任务和一个低优先级的任务。两个任

8、务间通过一个二进制的信号灯进行同步,通过消息队列进行通讯。当前版本: x.x修改信息: 2000.06.05 John, Initial Version2000.07.05 Tom, Bug xxxx fixed*/(空2行,开始程序正文)1.3.4 函数注释通常置于每函数或过程的开头部分,它应当给出函数或过程的整体说明对于理解程序本身具有引导作用。一般包括如下条目:模块标题。有关本模块功能和目的的说明。调用格式接口说明:包括输入、输出、返回值、异常。算法。如果模块中采用了一些复杂的算法。例:file:/(注释开头应和上一函数空两行)(注释开头与上一函数最后一行间隔两行)/*标题:assign

9、mentComplete功能:BSC=MSC消息生成函数,生成assignment_complete指配完成消息(BSMAP消息) .格式:int assignmentComplete(int iCellId, int iServiceChannnelNum, char *pszMSGData) throw(exception1, exception2)输入:int iCellId: MS所在的小区识别iCellId取值:0x00-0xff .4.Q/ECC/BJ 0102001int iServiceChannnelNum:MS所占的业务信道号码输出:char * pszMSGData:指配

10、完成消息数据返回值: 0x00正常异常:exception1异常情况1, exception2异常情况2*/( 注释后直接开始程序正文,不空行。)1.3.5功能性注释嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。而不要解释下面怎么做,因为解释怎么做常常与程序本身是重复的。例:/*把 amount 加到 total中*/total = amount + total;这样的注释仅仅是重复了下面的程序,对于理解它的工作并没有什么作用。而下面的注释,有助于读者理解。/*将每月的销售额amount加到年销售额total中*/total = a

11、mount + total;1.4 函数编写应尽可能短小精悍,一般不超过两屏,以便于调试和理解。1.5语句结构为保证语句结构的清晰和程序的可读性,在编写软件程序时应注意以下几个方面的问题:在一行内只写一条语句,并采用空格、空行和移行保证清楚的视觉效果。每一个嵌套的函数块,使用一个TAB缩进(可以设定为4个空格),大括号必须放在条件语句的下一行,单独成一行,便于匹对:如,有一段程序如下:for(i=1;in-1;i+) t=1; for(j=i+1;jn;j+)if(ajat ) t=j; if(t!=i )work=at;at=aI;aI=work;应写为for( i=1; in-1; i+)

12、t=1;for(j = i+1; jn; j+)if(aib)?a:b;不要使用空的if else 语句。如if(cMychar = A)if(cMychar = Z)printf(“This is a letter n”);elseprintf(“This is not a letter n”);else到底是否定哪个if容易引起误解。可通过加避免误解。尽量减少使用“否定”条件的条件语句。如:把 if( !( (cMychar9) ) )改为if( (cMychar=0) & (cMychar 1000#pragma once#endif / _MSC_VER 1000#include /

13、引用标准库的头文件, 必须使用#include “myheader.h” / 引用非标准库的头文件,必须使用namespace tq / 命名空间class CBox / 类结构声明;void Function1(); / 全局函数声明#endif / end of define _GRAPHICS_H_【规则1-1-3】防止头文件重复应用预处理块为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。【规则1-1-4】标准库的头文件的引用用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。【规则1-1-5】非标准库头文件的引用用 #

14、include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。【规则1-1-6】不允许使用全局类类型变量尽量不要在头文件中出现象extern CClassName obj 这类声明,以防止全局对象初始化时,多个类对象的构造函数和析购函数的调用顺序混乱。可用全局函数代替全局类类型变量。【规则1-1-7】发布的头文件应通过完整性检查发布的头文件(例如: header.h), 应用如下的test.cpp编译通过,以检查头文件相应的完整性与自包含性。test.cpp文件的内容如下:#include header.h / 检查头文件的完整性#include h

15、eader.h / 检查头文件的是否被重复引用【建议1-1-1】头文件中只存放“声明”而不存放“定义(实现代码)”在C+ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。如果想通过内联函数提高代码效率,可在定义文件中相应的成员函数实现代码前加上关键字inline(参见规则6-5-1)。第2节 定义文件(.CPP/.C)【规则1-2-1】定义文件的组成(1) 定义文件开头处的版权声明(参见示例1-1-1)。(2) 对一些头文件的引用。(3) 程序的实现体(包括数据和代

16、码)。假设定义文件的名称为 graphics.cpp,定义文件的结构参见示例1-2-1。【示例1-2-1】/ 版权和版本声明见示例1-1,此处省略。#include “graphics.h” / 引用头文件/ 类成员函数的实现体void CBox:Draw()/ 全局函数的实现体void Function1()第3节 文件的组织【规则1-3-1】文件应与类设计相对应将一个类分解给2个文件存储。一个是头文件(.h),用于声明类的成员变量和成员函数;另一是定义文件(.cpp/.c),用于类的成员变量的初始化和成员函数的具体实现。【规则1-3-2】不要将多个类的设计放在同一个“头文件/定义文件”中接

17、口类不必遵守该规则。【建议1-3-1】目录结构需要公开的头文件(如接口)保存于Include目录或Inc,将不需要公开的头文件和定义文件保存于Source目录或Src。【建议1-3-2】不要将一个类的设计放在一个头文件和多个定义文件 如果出现定义文件太大,不得不分解为多个定义文件的情况,应考虑类的设计是否恰当。第二部分 排版第1节 空行【规则2-1-1】类声明、函数定义之后空行在每个类声明之后、每个函数定义结束之后都要加空行。参见示例2-1-1(a)【规则2-1-2】函数体内,逻辑中断空行在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例2-1-1(b )【示例2

18、-1-1】(a-b)/ 空行void Function1() / 空行void Function2() / 空行void Function3() / 空行while (condition) statement1; / 空行 if (condition) statement2; else statement3; / 空行 statement4;示例2-1-1(a) 函数之间的空行 示例2-1-1(b) 函数内部的空行第2节 代码行【规则2-2-1】if、for、while、do等语句自占一行执行语句不得紧跟其后。不论执行语句有多少都要加。这样可以防止书写失误。示例2-2-1(a)为风格良好的代码

19、行,示例2-2-1(b)为风格不良的代码行。【示例2-2-1】(a-b)int nWidth; / 宽度int nHeight; / 高度int nDepth; / 深度int nWidth, nHeight, nDepth; / 宽度高度深度x = a + b;y = c + d;z = e + f;X a + b; y = c + d; z = e + f;if (nWidth nHeight)dosomething();if (nWidth nHeight) dosomething();for (initialization; condition; update)dosomething(

20、);/ 空行other();for (initialization; condition; update) dosomething();other();示例2-2-1(a)风格良好的代码行 示例2-2-1(b)风格不良的代码行【规则2-2-2】就近原则,变量在使用前才定义如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。【规则2-2-3】变量定义时必须初始化【示例2-2-2】int nWidth = 10; / 定义并初绐化widthint nHeight = 10; / 定义并初绐化heightint nDepth = 10; / 定义并初绐化depth【建议2-2-1】一行代码只做一件事情如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。第3节 代码行内的空格【规则2-3-1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1