首页 VB代码规范

VB代码规范

举报
开通vip

VB代码规范VB代码规范 第 1 页 共 13页 编号:YH-Q- 长沙XXXXXX有限公司 页号:1/13 软件开发标准 版次:A 第0次修改 文件起草部门 研发部 标题, 批 准 人 Visual Basic 编码标准 批 准 日 期 2008.5.8 第一章 命名约定 ....................................................................................................................... 2 ...

VB代码规范
VB代码规范 第 1 页 共 13页 编号:YH-Q- 长沙XXXXXX有限公司 页号:1/13 软件开发 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 版次:A 第0次修改 文件起草部门 研发部 标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 , 批 准 人 Visual Basic 编码标准 批 准 日 期 2008.5.8 第一章 命名约定 ....................................................................................................................... 2 第二章 代码布局格式约定 ........................................................................................................ 3 第三章 类型使用约定 ................................................................................................................ 4 第四章 表达式约定.................................................................................................................... 4 第五章 控制结构约定 ................................................................................................................ 4 第六章 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 及操作符使用约定 ................................................................................................. 4 第七章 模块及访问约定 ............................................................................................................ 4 第八章 注释使用约定 ................................................................................................................ 5 第九章 错误处理约定 ................................................................................................................ 5 第十章 其它 ............................................................................................................................... 6 第 2 页 共 13页 第一章 命名约定 1(虽然在VB中对字母大小写不敏感,本规定要求在程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 编码过程中,一律按字 母大小写敏感处理。 2(一律采用变量强制声明,即在“选项”对话框的“编辑器”标签中,复选“要求 变量声明”选项。Option Explicit 语句要求在 Visual Basic 程序中声明所有的变量。 3(变量名命名约定 3(1(变量名应符合Visual Basic的基本变量名命名规定。 , 它们必须以字母开头。 , 它们不可以包含嵌入的句号或者类型声明字符(规定数据类型的特殊字 符)。 , 它们不能超过 255 个字符。控件、窗体、类和模块的名字不能超过 40 个 字符。 , 它们不能和受到限制的关键字同名。 3(2(变量名的定义应有意义,一律使用英文字母进行拼写,不用汉语拼音。 变量名=[作用域]_[类型][修饰词][名词] 3(3(变量名使用混合大小写,并以小写字母开头。 如:Dim nTemp As Long 3(4(如果变量名使用多个单词,将修饰词放在前面,并且尽量拼写完整增加可 读性。如:maxElement,currentFile 等。 3(5(变量名大小应至少2~3个字母。(当作为循环变量时,可以使用单个字母。 如:i,j,k等。) 3(6(变量名中应有其类型的修饰前缀。 下表列出一些类型修饰前缀,其它依次类推。 子类型 前缀 示例 Boolean b bFound Byte byt bytRasterData Date(Time) dt dtmStart Double dbl dblTolerance Error err errOrderNum Integer n intQuantity Long n lngDistance Object obj objCurrent Single sng sngAverage Variant var varMyData String str strFirstName Currency crr crrTotal 3(7(变量生存期(作用域)前缀的使用按下表所示。 g_ g_strUserName 全局 m_ m_bCalcInProgress 模块级 dblVelocity 本地到过程 无 第 3 页 共 13页 3(8(尽量不使用Variant类型变量。 3(9(对于用户定义类型,应给每种类型一个它自己的三个字符的前缀。并且这 些前缀是以 "u" 开始的,例如,ucli 可以被用来作为一个用户定义的客 户类型变量的前缀。 3(10(常量名全部使用大写,当常量名是用多个单词表示时单词之间应用下划线 连起来。如:BUFFER_SIZE,FILE_SIZE 等。 4(对象名命名约定 4(1(所有对象名必须以小写字母开头,其后每一个单词都以大写字母开头 如:dlgFileOpen,mnuFileOpen。 4(2(应该用一致的前缀来命名对象,使人们容易识别对象的类型。 附件1列出了Visual Basic 支持的一些推荐使用的控件对象前缀。 附件2列出了Visual Basic 支持的推荐使用的数据访问对象 (DAO) 的 前缀。 对于表中没有列出的对象依次类推。 5(函数名或过程名命名约定 5(1(所有函数名或过程名必须以大写字母开头,尽量采用组合词表示其功能 而且,函数名应该以一个动词起首。 如: CloseDialog,GetValue. 5(2(对于函数名来说,最好能在其名字中包含其返回的类型。 如:IsEmpty返回类型是布尔值(Boolean)。 第二章 代码布局格式约定 1(语句块之间至少空一行。 ( 同一层的语句应对齐。 2 3( 下一层的语句应缩进四个空格。 4( 一行只做一件事情。如:一行只定义一个变量,其余部分用于注释。 5( 对于较长的代码行应分行书写,续行应缩进四个空格。 例如产生一个 SQL 字符串时,代码可写成如下形式: Dim strQuery As String strQuery = "SELECT *" _ & " FROM Titles" _ & " WHERE [Year Published] > 1988" rdoQuery.SQL = strQuery 第 4 页 共 13页 第三章 类型使用约定 1( 尽量不使用Integer,single;而使用Long,Double。 2(任何时候不使用缺省声明 第四章 表达式约定 1(提倡多使用圆括号,尽量使读者在30秒内理解表达式的意思。 2( 避免在表达式使用混合类型。 3(循环终止判断条件尽量容易满足。 第五章 控制结构约定 1( 尽量避免使用goto语句。 2( 结构嵌套不超过7层。 第六章 函数及操作符使用约定 1(避免使用MSDN文档中,已标明过时了(obsolete)的函数。 2(优先使用值调用,然后考虑使用地址调用。 3(尽量使用常数作为实参。 第七章 模块及访问约定 1( 一个模块只做一件事。 2( 模块名应能反映模块的功能。 3( 模块的组织应能体现面向对象技术。譬如为了体现封装性,较好的编码习惯是尽可 能写模块化的代码。例如,如果应用程序显示一个对话框,就把要完成这一对话任 务所需要的所有控件和代码放在单一的窗体中。这有助于将应用程序的代码组织在 有用的组件中,并减小它运行时的开销。 4( 模块中声明的变量的生存期应尽量短。在 Visual Basic 的应用程序中,只有当没有 其它方便途径在窗体之间共享数据时才使用全局变量。当必须使用全局变量时,在 一个单一模块中声明它们,并按功能分组。给这个模块取一个有意义的名称,以指 明它的作用,如 Public.bas。 第 5 页 共 13页 第八章 注释使用约定 1( 每一模块文件的开头,都应该有一段注释(banner),用于说明该模块的版权,文件 名,项目名称,作者名,复审者名,开始编写日期,最后一次修改日期,简单功能 描述,改动描述等。具体样板见附件3。 2( 所有的过程和函数都应该以描述这段过程的功能的一段简明注释开始(这段例程干 什么)。这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间 而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟---成为错误的注释。 代码本身和必要的嵌入注释将描述实现方法。 3( 当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过 程的参数。被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也 必须在每个过程的起始处描述它们。 4( 过程头注释块应该包括下列标题。具体样板见附件4。 标 题 注 释 描 述 目的 该过程完成什么(而不是怎么完成)。 假设 列出每个外部变量、控件、打开文件或其它不明显元素。 效果 列出每个被影响的外部变量、控件、或文件及其作用(只有当它不 明显时)。 输入 每一个可能不明显的参数。参数分别在单独的行上,并嵌入注释。 返回 函数返回值的说明。 ( 每一个重要变量的声明应该包括一个嵌入注释,来描述该变量的使用。 5 6( .Bas 模块包含 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 的 Visual Basic 一般常量声明,在其起始处,应该包括描述应用 程序的综述,列举主要数据对象、过程、算法、对话、数据库及系统需求。 具体例子见附件5。 7( 函数(过程)代码中每一功能块应注释说明。 8( select case语句的每一入口块(case),应加注释说明;并且必须包含Case Else 语句 来处理不可预见的情况。 9( 在对象的定义或声明处应注释说明定义或声明该对象的目的。 10( 对于易产生误解的代码行,应单独加以注释。 11( 对关键性代码行,必须单独注释详细说明。 12( 对于注释掉的代码段,在其前面应额外加注释来说明注释掉的原因。如果重用 该代码段,应去掉前面的注释说明。 第九章 错误处理约定 错误处理程序是应用程序中捕获和响应错误的例程。对于预感可能会出错的任 何过程(应该假定任何 Basic 语句都可能导致错误,除非确知情况并非如此),均 要对这些过程添加错误处理程序。附件6给出具体例子。 第 6 页 共 13页 第十章 其它 1(文件中注释和代码的比例至少为4 :5。 2(代码行中的注释应占代码块的20%左右。 3(一个函数(过程)的代码行尽量不要超过80行。 4(一个模块文件尽量不要超过500行。 5(模块嵌套尽量不超过7层。 6(在不违背以上规范的情况下,如果能优化代码尽量优化它。 如:使用 For Each...Next 替代 For...Next。 7(至于是否使用Unicode字符集另行规定。 8(在一个工程文件集中,应有一个readme文本文件,文件中应包含每个模块文件的 说明。 第 7 页 共 13页 附件1 控 件 类 型 前 缀 例 子 3D Panel pnl pnlGroup ADO Data ado adoBiblio Animated button ani aniMailBox Check box chk chkReadOnly Combo box, drop-down list cbo cboEnglish box Command button cmd cmdExit Common dialog dlg dlgFileOpen Communications com comFax ctr ctrCurrent Control (当特定类型未知 时,在过程中所使用的) Data dat datBiblio Data-bound combo box dbcbo dbcboLanguage Data-bound grid dbgrd dbgrdQueryResult Data-bound list box dblst dblstJobType Data combo dbc dbcAuthor Data grid dgd dgdTitles Data list dbl dblPublisher Data repeater drp drpLocation Date picker dtp dtpPublished Directory list box dir dirSource Drive list box drv drvTarget File list box fil filSource Flat scroll bar fsb fsbMove Form frm frmEntry Frame fra fraLanguage Gauge gau gauStatus Graph gra graRevenue Grid grd grdPrices Hierarchical flexgrid flex flexOrders Horizontal scroll bar hsb hsbVolume Image img imgIcon Image combo imgcbo imgcboProduct ImageList ils ilsAllIcons Label lbl lblHelpMessage Lightweight check box lwchk lwchkArchive Lightweight combo box lwcbo lwcboGerman Lightweight command lwcmd lwcmdRemove button Lightweight frame lwfra lwfraSaveOptions Lightweight horizontal lwhsb lwhsbVolume scroll bar Lightweight list box lwlst lwlstCostCenters Lightweight option button lwopt lwoptIncomeLevel Lightweight text box lwtxt lwoptStreet Lightweight vertical scroll lwvsb lwvsbYear bar Line lin linVertical List box lst lstPolicyCodes ListView lvw lvwHeadings 第 8 页 共 13页 MAPI message mpm mpmSentMessage MAPI session mps mpsSession MCI mci mciVideo Menu mnu mnuFileOpen Month view mvw mvwPeriod MS Chart ch chSalesbyRegion MS Flex grid msg msgClients MS Tab mst mstFirst OLE container ole oleWorksheet Option button opt optGender Picture box pic picVGA Picture clip clp clpToolbar ProgressBar prg prgLoadFile Remote Data rd rdTitles RichTextBox rtf rtfReport Shape shp shpCircle Slider sld sldScale Spin spn spnPages StatusBar sta staDateTime SysInfo sys sysMonitor TabStrip tab tabOptions Text box txt txtLastName Timer tmr tmrAlarm Toolbar tlb tlbActions TreeView tre treOrganization UpDown upd updDirection Vertical scroll bar vsb vsbRate 对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。只有当需要澄清时,才使用多于三个字符的前缀。 例如,对于派生的或修改的控件象上述那样扩展其前缀,使得在真正使用了哪一个控件的问题上避免混淆。对于第三方控件,应该把制造商的小写缩写名附加到前缀中。例如,从 Visual Basic Professional 3D 框架中创建的一个控件实例可以用 fra3d 这样的前缀,以避免混淆所使用的控件。 第 9 页 共 13页 附件2 数据库对象 前 缀 例 子 Container con conReports Database db dbAccounts DBEngine dbe dbeJet Document doc docSalesReport Field fld fldAddress Group grp grpFinance Index ix idxAge Parameter prm prmJobCode QueryDef qry qrySalesByRegion Recordset rec recForecast Relation rel relEmployeeDept TableDef tbd tbdCustomers User usr usrNew Workspace wsp wspMine 第 10 页 共 13页 附件3 ‘********************************************************************** ‘ TOP GROUP INC.* ‘ Copyright (c) 1999 TOP GROUP INC. ‘ ‘ All rights reserved. No part of this program or publication may be ‘ reproduced, transmitted, transcribed, stored in a retrieval system, ‘ or translated into any language or computer language, in any form or ‘ by any means, electronic, mechanical, magnetic, optical, chemical, ‘ biological, or otherwise, without the prior written permission of: ‘ ‘ Tel: (028) 7986206 ‘ Fax: (028) 7986206 ‘ Add: TuoPu Da Dao , HongGuang, ChengDu, SiChuan, China ‘ P.C 610730 ‘ ‘*********************************************************************** ‘*********************************************************************** ‘*********************************************************************** ‘ ‘ Source File Name : 文件名 ‘ Project Name : 项目名称 ‘ Author : 作者名 ‘ Inspector : 复审者名 ‘ Date Generated : 开始编写日期 ‘ Last Revision Date : 最后一次修改日期 ‘ Brief Description : 简单功能描述 ‘ Change Description : 每次改动描述 ‘ ‘*********************************************************************** 第 11 页 共 13页 附件4 '***************************************************** '目的: 在用户列表数组中找出 ' 一个指定用户的第一次出现位置。 '输入: ' strUserList(): 被搜索的用户列表。 ' strTargetUser: 要搜索的用户名。 ' 返回: 在rasUserList 数组中rsTargetUser ' 的第一次出现的索引。 ' 如果目标用户没找到,返回-1。 '***************************************************** Function intFindUser (strUserList() As String, strTargetUser As _ String)As Integer Dim i As Integer ' 循环计数器。 Dim blnFound As Integer ' 目标寻找标志。 intFindUser = -1 i = 0 While i <= Ubound(strUserList) and Not blnFound If strUserList(i) = strTargetUser Then blnFound = True intFindUser = i End If Wend End Function 第 12 页 共 13页 附件5 Option Explicit ' 这个模块演示了 Visual Basic 为每个线程 ' 创建一个独立的全局数据实例。 ' 那么,glngGlobalData 变量 ' 对于每个线程的 Visual Basic 开始, ' 将有独立的值。 ' ' 这个事实用于保存每个线程上的 ' Coffee 对象的数:在 Coffee ' 对象的初始化事件中,它添加一个到 ' glngGlobalData;在它的终止事件中, ' 他减少一个。 ' ' 任何 Coffee 对象都可以通过测试 ' glngGlobalData 来了解有多少个 ' Coffee 对象在它的线程中。客户也 ' 可以通过调用由 glngGlobalData 返回的 ' NumberOnThread 方法来进行了解。 ' ' 当 MTCoffee 在开发环境中运行时, ' 此时只有一个单独的线程, ' NumberOnThread 是全部 ' Coffee 对象的总数。当 MTCoffee 同 ' 每个对象选定的线程一起编译时, ' 这个数对于每个 Coffee 对象 ' 都为一,除非您调用 GetCoffeeOnSameThread ' 在线程上创建第二个 Coffee 。 ' ' 当 MTCoffee 带有线程缓冲池编译时, ' NumberOnThread 在一些线程上 ' 将大于一无论活动的 ' Coffee 对象数是否比 ' 缓冲池中的线程数大。 ' ' 这个项目包含在联机电子图书的 "可调性与 ' 多线程," 部分中。 Public glngGlobalData As Long 第 13 页 共 13页 附件6 Function Divide (numer, denom) as Variant Dim Msg as String Const mnErrDivByZero = 11, mnErrOverFlow = 6 Const mnErrBadCall = 5 On Error GoTo MathHandler Divide = numer / denom Exit Function MathHandler: If Err.Number = MnErrDivByZero Or _ Err.Number = ErrOverFlow _ Or Err = ErrBadCall Then Divide = Null ' 如果错误是被零除、溢出或非法过程调用, ' 则返回 NULL。 Else '显示意想不到的错误信息。 Msg = "Unanticipated error " & Err.Number Msg = Msg & ": " & Err.Description MsgBox Msg, vbExclamation End If ' 不管什么情况, Resume Next Resume Next ' 总在 Exit 函数语句处继续执行。 End Function …新年快乐。。。。
本文档为【VB代码规范】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:39KB
软件:Word
页数:16
分类:互联网
上传时间:2017-10-14
浏览量:30