UFQP2-09QI002 VB程序编程规范_第1页
UFQP2-09QI002 VB程序编程规范_第2页
UFQP2-09QI002 VB程序编程规范_第3页
UFQP2-09QI002 VB程序编程规范_第4页
UFQP2-09QI002 VB程序编程规范_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

文件编号:UF/QP/2-09/QI/002编写:翟万达、周明川 审核:SEPG日期:01/10/25版号:1.0draft页号:9/1010PAGEPAGE12024对象命名约定应该用一致的前缀来命名对象,使人们容易识别对象的类型。下面列出了VisualBasic支持的一些推荐使用的对象约定。推荐使用的控件前缀控件类型前缀例子3DPanelpnlpnlGroupADODataadoadoBiblioAnimatedbuttonanianiMailBoxCheckboxchkchkReadOnlyCombobox,drop-downlistboxcbocboEnglishCommandbuttoncmdcmdExitCommondialogdlgdlgFileOpenCommunicationscomcomFaxControl(当特定类型未知时,在过程中所使用的)ctrctrCurrentDatadatdatBiblioData-boundcomboboxdbcbodbcboLanguageData-boundgriddbgrddbgrdQueryResultData-boundlistboxdblstdblstJobTypeDatacombodbcdbcAuthorDatagriddgddgdTitlesDatalistdbldblPublisherDatarepeaterdrpdrpLocationDatepickerdtpdtpPublishedDirectorylistboxdirdirSourceDrivelistboxdrvdrvTargetFilelistboxfilfilSourceFlatscrollbarfsbfsbMoveFormfrmfrmEntryFramefrafraLanguageGaugegaugauStatusGraphgragraRevenueGridgrdgrdPricesHierarchicalflexgridflexflexOrdersHorizontalscrollbarhsbhsbVolumeImageimgimgIconImagecomboimgcboimgcboProductImageListilsilsAllIconsLabellbllblHelpMessageLightweightcheckboxlwchklwchkArchiveLightweightcomboboxlwcbolwcboGermanLightweightcommandbuttonlwcmdlwcmdRemoveLightweightframelwfralwfraSaveOptionsLightweighthorizontalscrollbarlwhsblwhsbVolumeLightweightlistboxlwlstlwlstCostCentersLightweightoptionbuttonlwoptlwoptIncomeLevelLightweighttextboxlwtxtlwoptStreetLightweightverticalscrollbarlwvsblwvsbYearLinelinlinVerticalListboxlstlstPolicyCodesListViewlvwlvwHeadingsMAPImessagempmmpmSentMessageMAPIsessionmpsmpsSessionMCImcimciVideoMenumnumnuFileOpenMonthviewmvwmvwPeriodMSChartchchSalesbyRegionMSFlexgridmsgmsgClientsMSTabmstmstFirstOLEcontaineroleoleWorksheetOptionbuttonoptoptGenderPictureboxpicpicVGAPictureclipclpclpToolbarProgressBarprgprgLoadFileRemoteDatardrdTitlesRichTextBoxrtfrtfReportShapeshpshpCircleSlidersldsldScaleSpinspnspnPagesStatusBarstastaDateTimeSysInfosyssysMonitorTabStriptabtabOptionsTextboxtxttxtLastNameTimertmrtmrAlarmToolbartlbtlbActionsTreeViewtretreOrganizationUpDownupdupdDirectionVerticalscrollbarvsbvsbRate推荐使用的数据访问对象(DAO)的前缀用下列前缀来指示数据访问对象。数据库对象前缀例子ContainerconconReportsDatabasedbdbAccountsDBEnginedbedbeJetDocumentdocdocSalesReportFieldfldfldAddressGroupgrpgrpFinanceIndexixidxAgeParameterprmprmJobCodeQueryDefqryqrySalesByRegionRecordsetrecrecForecastRelationrelrelEmployeeDeptTableDeftbdtbdCustomersUserusrusrNewWorkspacewspwspMine一些例子:DimdbBiblioAsDatabaseDimrecPubsInNYAsRecordset,strSQLStmtAsStringConstDB_READONLY=4'设置常量。'打开数据库。SetdbBiblio=OpenDatabase("BIBLIO.MDB")'为SQL语句设置文本。strSQLStmt="SELECT*FROMPublishersWHERE_State='NY'"'创建新的记录集对象。SetrecPubsInNY=db.OpenRecordset(strSQLStmt,_dbReadOnly)推荐使用的菜单前缀应用程序频繁使用许多菜单控件,对于这些控件具备一组唯一的命名约定很实用。除了最前面"mnu"标记以外,菜单控件的前缀应该被扩展:对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。下表列出了一些例子。菜单标题序列菜单处理器名称FileOpenmnuFileOpenFileSendEmailmnuFileSendEmailFileSendFaxmnuFileSendFaxFormatCharactermnuFormatCharacterHelpContentsmnuHelpContents当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在VisualBasic的“属性”窗口中。而且,菜单控件的名字清楚地表示出它们所属的菜单项。为其它控件选择前缀对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。只有当需要澄清时,才使用多于三个字符的前缀。例如,对于派生的或修改的控件象上述那样扩展其前缀,使得在真正使用了哪一个控件的问题上避免混淆。对于第三方控件,应该把制造商的小写缩写名附加到前缀中。例如,从VisualBasicProfessional3D框架中创建的一个控件实例可以用fra3d这样的前缀,以避免混淆所使用的控件。常量和变量命名约定除了对象之外,常量和变量也需要良好格式的命名约定。本节列出了VisualBasic支持的常量和变量的推荐约定。并且讨论标识数据类型和范围的问题。变量应该总是被定义在尽可能小的范围内。全局(Public)变量可以导致极其复杂的状态机构,并且使一个应用程序的逻辑非常难于理解。全局变量也使代码的重用和维护更加困难。VisualBasic中的变量可以有下列范围:范围声明位置可见位置过程级过程,子过程或函数过程中的‘Private’在声明它的过程中模块级窗体或代码模块(.frm、.bas)的声明部分中的‘Private’窗体或代码模块中的每一个过程全局代码模块(.bas)的声明部分中的‘Public’应用程序中的每一处在VisualBasic的应用程序中,只有当没有其它方便途径在窗体之间共享数据时才使用全局变量。当必须使用全局变量时,在一个单一模块中声明它们,并按功能分组。给这个模块取一个有意义的名称,以指明它的作用,如Public.bas。较好的编码习惯是尽可能写模块化的代码。例如,如果应用程序显示一个对话框,就把要完成这一对话任务所需要的所有控件和代码放在单一的窗体中。这有助于将应用程序的代码组织在有用的组件中,并减小它运行时的开销。除了全局变量(应该是不被传递的),过程和函数应该仅对传递给它们的对象操作。在过程中使用的全局变量应该在过程起始处的声明部分中标识出来。此外,应该用ByVal将参数传递给Sub过程及function过程,除非明显地需要改变已传递的参数值。变量范围前缀随着工程大小的增长,划分变量范围的工作也迅速增加。在类型前缀的前面放置单字母范围前缀标明了这种增长,但变量名的长度并没有增加很多。范围前缀例子全局ggstrUserName模块级mmblnCalcInProgress本地到过程无dblVelocity如果一个变量在标准模块或窗体模块中被声明为Public,那么该变量具有全局范围。如果一个变量在标准模块或窗体模块中被分别声明为Private,那么该变量有模块级范围。注意一致性是卓有成效地使用这种技术的关键;VisualBasic中的语法检查器不会捕捉以"p."开头的模块级变量。常量常量名的主体是大小写混合的,每个单词的首字母大写。尽管标准VisualBasic常量不包含数据类型和范围信息,但是象i、s、g和m这样的前缀对于理解一个常量的值和范围还是很有用的。对于常量名,应遵循与变量相同的规则。例如:mintUserListMax'对用户列表的最大限制'(整数值,本地到模块)gstrNewLine'新行字符'(字符串,应用程序全局使用)变量声明所有的变量将会节省编程时间,因为键入操作引起的错误减少了(例如,究竟是aUserNameTmp,还是sUserNameTmp,还是sUserNameTemp)。在“选项”对话框的“编辑器”标签中,复选“要求变量声明”选项。OptionExplicit语句要求在VisualBasic程序中声明所有的变量。应该给变量加前缀来指明它们的数据类型。而且前缀可以被扩展,用来指明变量范围,特别是对大型程序。变量数据类型用下列前缀来指明一个变量的数据类型。数据类型前缀例子BooleanblnblnFoundeanBbytbytRasterDatanByteCollectionocolcolWidgetsectionocurcurRevenueonobjectCudtmdtmStartectCurdbldblToleranceCurreerrerrOrderNumrencyDaintintQuantityyDatlnglngDistanceObjectobjobjCurrentectSinsngsngAverageSinglestrstrFNamegleStringUser-defudtudtEmployeeUser-devntvntCheckSum描述变量和过程名变量或过程名的主体应该使用大小写混合形式,并且应该足够长以描述它的作用。而且,函数名应该以一个动词起首,如InitNameArray或CloseDialog。对于频繁使用的或长的项,推荐使用标准缩略语以使名称的长度合理化。一般来说,超过32个字符的变量名在VGA显示器上读起来就困难了。当使用缩略语时,要确保它们在整个应用程序中的一致性。在一个工程中,如果一会儿使用Cnt,一会儿使用Count,将导致不必要的混淆。用户定义的类型在一项有许多用户定义类型的大工程中,常常有必要给每种类型一个它自己的三个字符的前缀。如果这些前缀是以"u"开始的,那么当用一个用户定义类型来工作时,快速识别这些类型是很容易的。例如,ucli可以被用来作为一个用户定义的客户类型变量的前缀。结构化编码约定除了命名约定外,结构化编码约定,可以极大地改善代码的可读性,如代码注释和一致性缩进。代码注释约定所有的过程和函数都应该以描述这段过程的功能的一段简明注释开始(这段例程干什么)。这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟—成为错误的注释。代码本身和必要的嵌入注释将描述实现方法。当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过程的参数。被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也必须在每个过程的起始处描述它们。过程头注释块应该包括下列节标题。关于例子,请参阅下节“格式化代码”。节标题注释描述目的该过程完成什么(而不是怎么完成)。假设列出每个外部变量、控件、打开文件或其它不明显元素。效果列出每个被影响的外部变量、控件、或文件及其作用(只有当它不明显时)。输入每一个可能不明显的参数。参数分别在单独的行上,并嵌入注释。返回函数返回值的说明。记住下列几点:每一个重要变量的声明应该包括一个嵌入注释,来描述该变量的使用。变量、控件及过程的命名应该足够清楚,使得只有复杂的执行细节才需要嵌入注释。.Bas模块包含工程的VisualBasic一般常量声明,在其起始处,应该包括描述应用程序的综述,列举主要数据对象、过程、算法、对话、数据库及系统需求。有时,一段描述算法的伪码可能会有所帮助。格式化代码因为许多程序员仍然使用VGA显示器,所以在允许代码格式来反映逻辑结构和嵌套的同时,应尽可能地省屏幕空间。下面列出几点:标准的、基于制表位的嵌套块应该被缩进四个空格(缺省情况下)。过程的功能综述注释应该缩进一个空格。跟在综述注释后面的最高级的语句应该缩进一个制表位,而每一个嵌套的块再缩进一个制表位。例如:'*****************************************************'目的:在用户列表数组中找出'一个指定用户的第一次出现位置。'输入:'strUserList():被搜索的用户列表。'strTargetUser:要搜索的用户名。'返回:在rasUserList数组中rsTargetUser'的第一次出现的索引。'如果目标用户没找到,返回-1。'*****************************************************FunctionintFindUser(strUserList()AsString,strTargetUserAs_String)AsIntegerDimiAsInteger'循环计数器。DimblnFoundAsInteger'目标寻找标志。intFindUser=-1i=0Whilei<=Ubound(strUserList)andNotblnFoundIfstrUserList(i)=strTargetUserThenblnFound=TrueintFindUser=iEndIfWendEndFunction

温馨提示

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

评论

0/150

提交评论