软件组VC编程规范-模板_第1页
软件组VC编程规范-模板_第2页
软件组VC编程规范-模板_第3页
软件组VC编程规范-模板_第4页
软件组VC编程规范-模板_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件组VC编程规范制作日期执行日期PagePAGE15/15基本要求1)程序结构清析,简单易懂,单个函数的程序行数不得超过100行。2)打算干什么,要简单,直接了当,代码精简,避免垃圾程序。3)尽量使用标准库函数和公共函数。4)不要随意定义全局变量,尽量使用局部变量。5)使用括号以避免二义性。2可读性要求可读性第一,效率第二。保持注释与代码完全一致。每个源程序文件,都有文件头说明,说明规格见规范。每个函数,都有函数头说明,说明规格见规范。主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。常量定义(DEFINE)有相应说明。处理过程的每个阶段都有相关注释说明。在典型算法前都有注释。利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为6个字节。循环、分支层次不要超过五层。注释可以与语句在同一行,也可以在上行。空行和空白字符也是一种特殊注释。一目了然的语句不加注释。注释的作用范围可以为:定义、引用、条件分支以及一段代码。注释行数(不包括程序头和函数头说明部份)应占总行数的1/5到1/3。3结构化要求禁止出现两条等价的支路。禁止GOTO语句。用IF语句来强调只执行两组语句中的一组。禁止ELSEGOTO和ELSERETURN。用CASE实现多路分支。避免从循环引出多个出口。函数只有一个出口。不使用条件赋值语句。避免不必要的分支。不要轻易用条件分支去替换逻辑表达式。4正确性与容错性要求程序首先是正确,其次是优美。无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。所有变量在调用前必须被初始化。对所有的用户输入,必须进行合法性检查。不要比较浮点数的相等,如:10.0*0.1==1.0,不可靠程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。5可重用性要求重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。公共控件或类应建立使用模板。6注释要求原则上注释要求使用中文。文件头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。建议格式如下:/*************************************************文件名:Copyright(C),2003-2006,南京天溯自动化控制系统有限公司.作者:日期:版本:描述://用于详细说明此程序文件完成的主要功能,与其他模块//或函数的接口,输出值、取值范围、含义及参数间的控//制、顺序、独立或依赖等关系主要函数列表://每条记录应包括函数名及功能简要说明1.修改历史记录:://每条修改记录应包括修改日期、修改者及修改内容简述1.修改日期:修改人:修改内容:2....*************************************************/函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。建议格式如下:/*************************************************函数名称://函数名称描述://函数功能、性能等的描述调用函数://被本函数调用的函数清单被调用函数://调用本函数的函数清单访问表://被访问的表(此项仅对于牵扯到数据库操作的程序)修改表://被修改的表(此项仅对于牵扯到数据库操作的程序)输入参数://输入参数说明,包括每个参数的作//用、取值说明及参数间关系。输出参数://对输出参数的说明。返回值://函数返回值的说明其它说明://其它说明*************************************************/边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。注释的内容要清楚、明了,含义准确,防止注释二义性。错误的注释不但无益反而有害。避免在注释中使用缩写,特别是非常用缩写。注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。注释与所描述内容进行同样的缩排。将注释与其上面的代码用空行隔开。对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。避免在一行代码或表达式的中间插入注释。通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。在代码的功能、意图层次上进行注释,提供有用、额外的信息。在程序块的结束行右方加注释标记,以表明某程序块的结束。注释格式尽量统一,建议使用“/*……*/”。注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。7标识符命令要求标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。自己特有的命名风格,要自始至终保持一致,不可来回变化。命名规则中没有规定到的地方才可有个人命名风格。对于变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等。命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意义字符串,如果连续意义字符串仅两个,可都大写.如OK.BOOL类型bEnable;ch*charchTextc*类对象cMain(对象实例)h*Handle(句柄)hWndi*intn*无符号整型p*指针sz,str*字符串wWORDx,y坐标Char或者TCHAR类型与WindowsAPI有直接联系的用szAppName[10]形式否则用FileName[10]形式,单个字符也可用小写字母表示;Int类型nCmdShow;LONG类型lParam;UINT类型uNotify;DWORD类型dwStart;PSTR类型pszTip;LPSTR类型lpCmdLineLPTSTR类型lpszClassName;LPVOID类型lpReservedWPARAM类型wParam,LPARAM类型lParamHWND类型hDlg;HDC类型hDC;HINSTANCE类型hInstanceHANDLE类型hHandle,HICON类型hIcon;intiTmpfloatfTmpDWORDdw*String,AnsiStringstr*m_类成员变量m_nVal,m_bFlagg_全局变量g_nMsg,g_bFlag局部变量中可采用如下几个通用变量:nTemp,nResult,I,J(一般用于循环变量)。对于常量命名,常量和宏定义必须具有一定的实际意义;常量和宏定义在#include和函数定义之间;常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一条定义的右侧必须有一简单的注释,说明其作用;资源名字定义格式:菜单:IDM_XX或者CM_XX位图:IDB_XX对话框:IDD_XX字符串:IDS_XXDLGINIT:DIALOG_XXICON:IDR_XX函数命名,函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源:模块名及文件名,如是内部函数,只要注释其定义文件名;第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线间隔,示例如下:voidUpdateDB_Tfgd(TRACK_NAME);//ModuleName:r01/sdw.cvoidPrintTrackData(TRACK_NAME);//ModuleName:r04/tern.cvoidImportantPoint(void);//ModuleName:r01/sdw.cvoidShowChar(int,int,chtype);//LocalModulevoidScrollUp_V(int,int);//LocalModule结构体类型命名必须全部用大写字母,原则上前面以下划线开始;结构体变量命名必须用大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。对于私有数据区,必须注明其所属的进程。全局数据定义只需注意其用途。示例如下:typedefstruct{charszProductName[20];charszAuthor[20];charszReleaseDate[16];charszVersion[10];unsignedlongMaxTables;unsignedlongUsedTables;}DBS_DATABASE;DBS_DATABASEGdataBase;控件的命名,用小写前缀表示类别,说明如下:fm窗口cmd按钮cobcombo,下拉式列表框txt文本输入框lablabal,标签imgimage,图象picpicturegrdGrid,网格scr滚动条lst列表框frmfram用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。常用的反义词组如下:add/removebegin/endcreate/destroyinsert/deletefirst/lastget/releaseincrement/decrementput/getadd/deletelock/unlockopen/closemin/maxold/newstart/stopnext/previoussource/targetshow/hidesend/receivesource/destinationcut/pasteup/down8程序要求程序编码力求简洁,结构清晰,避免太多的分支结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论