Select the product you need help with
信息: Microsoft 咨询服务的 Visual Basic 的命名约定文章编号: 110264 - 查看本文应用于的产品 本页概要它是一个不错的主意建立命名约定为 Visual Basic 代码。本文为您提供了 Microsoft 咨询服务 (MCS) 使用的命名约定。 本文档是超集的 Visual Basic 编码约定找到用 Visual Basic"程序员指南。 注: 本文中提及的第三方控件是由独立的 Microsoft 的供应商生产的。Microsoft 使任何担保,或暗示或其他方式,这些控件的性能或可靠性。 更多信息命名约定有助于 Visual Basic 程序员:
设置环境选项使用显式的选项。声明所有变量以保存通过减少由键入错误 (例如对于 aUserNameTmp 与导致的 bug 数编程时间 与 sUserNameTemp sUserNameTmp)。在环境选项对话框中设置要求变量声明为是。该选项显式语句要求您声明 Visual Basic 程序中的所有变量。 将文件另存为 ASCII 文本。将窗体 (.FRM) 和模块 (.BAS) 文件保存为方便使用的版本控制系统和最大限度地减少所可以由磁盘损坏造成的损害的 ASCII 文本。此外,您可以执行以下操作:
常用的对象的对象命名约定下表定义 MCS 标准对象名前缀。这些前缀都与 Visual Basic 程序员指南 》 中的文档保持一致。Prefix Object Type Example ------------------------------------------------------- ani Animation button aniMailBox bed Pen Bedit bedFirstName cbo Combo box and drop down list box cboEnglish chk Checkbox chkReadOnly clp Picture clip clpToolbar cmd (3d) Command button (3D) cmdOk (cmd3dOk) com Communications comFax ctr Control (when specific type unknown) ctrCurrent dat Data control datBiblio dir Directory list box dirSource dlg Common dialog control dlgFileOpen drv Drive list box drvTarget fil File list box filSource frm Form frmEntry fra (3d) Frame (3d) fraStyle (fra3dStyle) gau Gauge gauStatus gpb Group push button gpbChannel gra Graph graRevenue grd Grid grdPrices hed Pen Hedit hedSignature hsb Horizontal scroll bar hsbVolume img Image imgIcon ink Pen Ink inkMap key Keyboard key status keyCaps lbl Label lblHelpMessage lin Line linVertical lst List box lstPolicyCodes mdi MDI child form mdiNote mpm MAPI message mpmSentMessage mps MAPI session mpsSession mci MCI mciVideo mnu Menu mnuFileOpen opt (3d) Option Button (3d) optRed (opt3dRed) ole OLE control oleWorksheet out Outline control outOrgChart pic Picture picVGA pnl3d 3d Panel pnl3d rpt Report control rptQtr1Earnings shp Shape controls shpCircle spn Spin control spnPages txt Text Box txtLastName tmr Timer tmrAlarm vsb Vertical scroll bar vsbRate 对象的数据库对象的命名约定Prefix Object Type Example ------------------------------------------ db ODBC Database dbAccounts ds ODBC Dynaset object dsSalesByRegion fdc Field collection fdcCustomer fd Field object fdAddress ix Index object ixAge ixc Index collection ixcNewAge qd QueryDef object qdSalesByRegion qry (suffix) Query (see NOTE) SalesByRegionQry ss Snapshot object ssForecast tb Table object tbCustomer td TableDef object tdCustomers 菜单命名约定应用程序经常使用的大量菜单控件。如此一来,您需要为这些控件一组不同的命名约定。通过添加为每个级别的嵌套,最终的菜单标题的名称字符串末尾带有一个附加前缀,应将菜单控件前缀扩展超出初始 mnu 标签。例如:Menu Caption Sequence Menu Handler Name Help.Contents mnuHelpContents File.Open mnuFileOpen Format.Character mnuFormatCharacter File.Send.Fax mnuFileSendFax File.Send.Email mnuFileSendEmail 其他控件的命名约定上面未列出的新控件的尝试以拿出唯一的三个字符前缀。但是,很多一定要清除与要粘贴到三个字符。对于如一个增强型的列表框的派生控件扩展上面的前缀,这样的控件上没有任何混淆确实使用。一个小写的缩写制造商通常还将添加到前缀。例如对于创建三维框架可以在 Visual Basic 专业从一个控件实例将使用 fra3d 的前缀,以避免的混淆确实正在其上使用控件。从 MicroHelp 命令按钮可以使用 cmdm 以使它区别于标准的命令按钮 (cmd)。 第三方控件每个应用程序中使用的第三方控件应列出在应用程序的概述注释部分中,提供用于在控件、 控件的完整名称和软件供应商的名称的前缀:Prefix Control Type Vendor cmdm Command Button MicroHelp 变量和 $ 例程命名变量和函数的名称具有以下结构: <prefix><body><qualifier><suffix>Part Description Example -------------------------------------------------------------------------- <prefix> Describes the use and scope of the variable. iGetRecordNext <body> Describes the variable. iGetNameFirst <qualifier> Denotes a derivative of the variable. iGetNameLast <suffix> The optional Visual Basic type character. iGetRecordNext% 下表定义了基于 Windows 的 C 匈牙利表示法的变量和函数名前缀。这些前缀应该用于所有变量和函数名。使用旧的基本后缀 (如 %,&,#,等) 是反对这样做。 变量和函数名前缀:
Prefix Converged Variable Use Data Type Suffix
--------------------------------------------------------------------------
b bln Boolean Integer %
c cur Currency - 64 bits Currency @
d dbl Double - 64 bit Double #
signed quantity
dt dat Date and Time Variant
e err Error
f sng Float/Single - 32 Single !
bit signed
floating point
h Handle Integer %
i Index Integer %
l lng Long - 32 bit Long &
signed quantity
n int Number/Counter Integer %
s str String String $
u Unsigned - 16 bit Long &
unsigned quantity
udt User-defined type
vnt vnt Variant Variant
a Array
作用域和 $ 使用前缀: Prefix Description g Global m Local to module or form st Static variable (no prefix) Non-static variable, prefix local to procedure v Variable passed by value (local to a routine) r Variable passed by reference (local to a routine) iSend-表示发送的邮件数的计数 每个这些变量的名称告诉程序员非常不同的地方。 当在变量名会减少,从而发送 %时,此信息将丢失。作用域前缀,如 g 和 m 还有助于减少名称争用,尤其是在多开发人员的项目中的问题。 bSend-A 布尔型标志定义的最后一次发送操作成功 hSend-A 处理通信接口 匈牙利表示法是由 Windows C 程序员也广泛使用,不断地引用 Microsoft 产品文档中和在行业编程书籍。此外,C 编程人员和程序员使用 Visual Basic 之间债券将成为为 Visual c + + 开发系统收益发展的步伐得更强。此转换将导致将移动到 C 的第一次,这两个环境之间来回移动频繁的很多程序员的很多 Visual Basic 程序员。 正文的变量和例行名称正文的变量或例程的名称应使用混合大小写,并应根据需要来描述其目的一样长。此外,函数的名称应以开头,如 InitNameArray 或 CloseDialog 的一个谓词。常用的或长术语是以保持名称长度合理推荐标准的缩写。一般情况下,大于 32 个字符的变量名可能很难阅读 VGA 显示。 在使用缩写时请确保在整个应用程序保持一致。随机切换 Cnt 和计数在项目中将导致不必要的混淆。 变量和例行名称的限定符相关的变量和例程通常用于管理和操作公共对象。在这种情况下使用标准的限定符衍生的变量和例程的标签。尽管后的名称正文看起来可能有点改进 (如在 sGetNameFirst,代替 sGetFirstName,sGetLastName sGetNameLast),将限定符,但本练习中将帮助逻辑和应用程序的结构,使其更容易理解这些名称在 Visual Basic 编辑器例程一起列出的顺序。 下表定义了公共限定符和其标准含义:
Qualifier Description (follows Body)
--------------------------------------------------------------------------
First First element of a set.
Last Last element of a set.
Next Next element in a set.
Prev Previous element in a set.
Cur Current element in a set.
Min Minimum value in a set.
Max Maximum value in a set.
Save Used to preserve another variable that must be reset later.
Tmp A "scratch" variable whose scope is highly localized within the
code. The value of a Tmp variable is usually only valid across
a set of contiguous statements within a single procedure.
Src Source. Frequently used in comparison and transfer routines.
Dst Destination. Often used in conjunction with Source.
用户定义的类型符号名的末尾追加 _TYPE 与声明中全部大写的用户定义类型。例如:命名常量常数名称的正文应该 UPPER_CASE 单词之间的下划线 (_) 开头。虽然标准的 Visual Basic 常数不能包括匈牙利信息,前缀 (如 i、 s、 g,和 m 可以是非常有用,在了解值和常数的范围。为常数的名称遵循与变量相同的规则。例如:variant 数据类型如果您知道变量将始终存储特定类型的数据,Visual Basic 可以数据的更有效地处理如果声明该类型的变量。但是,使用数据库、 邮件、 DDE,或 OLE 时,变量数据类型可以是非常有用。许多数据库中允许 null 值作为字段的有效值。您的代码需要区分 NULL,0 (零) 和""(空字符串)。很多的时候这些类型的操作可以使用不需要知道它处理或通过在数据上接收的数据类型的一个通用服务例程。例如: 注释代码所有过程和函数应都开头描述功能特征的例程 (它做什么) 的简短注释。该描述不应描述实现细节 (如何它不它),因为这些通常随时间更改,还,从而导致不必要的注释的维护工作或更糟错误批注。代码本身以及任何所需的行中或本地注释将描述实现。参数传递给一个例程应描述其功能并不明显时该例程预期在特定范围参数。函数返回值,并由该例程 (尤其是通过引用参数) 更改的全局变量还必须在每个例程的开头描述。 例行的标头注释块应查找喜欢此 (请参阅下一节"格式代码"示例):
Section Comment Description
--------------------------------------------------------------------------
Purpose What the routine does (not how).
Inputs Each non-obvious parameter on a separate line with
in-line comments
Assumes List of each non-obvious external variable, control, open file,
and so on.
Returns Explanation of value returned for functions.
Effects List of each effected external variable, control, file, and
so on and the affect it has (only if this is not obvious)
变量、 控件,和例程的命名应当足够清楚注释行中只需要进行复杂或非直观的实现详细信息。 对话框的应用程序枚举主要数据对象,例程,算法,概述说明、 数据库和文件系统依赖项等应在包含项目的 Visual Basic 泛型常量声明.BAS 模块的开始处包含。 注: 项目窗口本身描述使此概述部分只需要提供了有关最重要的文件和模块,一个项目中的文件或文件没有列出工程窗口,如初始化 (.ini) 或数据库文件的列表。 格式代码因为很多程序员仍使用 VGA 显示,屏幕房地产必须被 conserved 多达可能同时仍然允许代码以反映逻辑结构和嵌套格式设置。嵌套缩进的标准的、 基于选项卡的块应为两个或四个空格。四个以上空格是不必要的并且可能导致要隐藏的或意外地截断的语句。少于两个空格不足够显示逻辑嵌套。Microsoft 知识库中,我们使用三个空格缩进。使用环境选项对话框来设置默认选项卡宽度。 功能概述注释应该是例程的缩进一个空格。 下面概述注释的最高级别语句应该为每个的缩进一个制表嵌套的块缩进一个其他选项卡。例如: 运算符始终使用时连接字符串,and 符号 (&),并使用数字值时使用加号 (+)。两个变量时,使用加号 (+) 与非数字值,可能会导致问题。 例如:作用域始终应该具有可能的最小作用域定义变量。 全局变量可以创建提升复杂的状态机,并使应用程序的逻辑极难理解。全局变量还使重复使用和维护代码变得更加困难。 在 Visual Basic 中的变量可以具有以下作用域:
Scope Variable Declared In: Visibility
--------------------------------------------------------------------------
Procedure-level Event procedure, sub, or Visible in the
function procedure in which
it is declared
Form-level, Declarations section of a form Visible in every
Module-level or code module (.FRM, .BAS) procedure in the
form or code
module
Global Declarations section of a code Always visible
module (.BAS, using Global
keyword)
如果必须使用全局变量,它是很好的做法,可将所有这些单个模块中声明,按组依据对它们分组函数。为模块指定有意义的名称,它指示它如 GLOBAL.BAS 的用途。 (这不应传递) 的全局变量、 过程和函数的除外只应对传递到它们的对象执行操作。在例程中使用的全局变量应在一般的注释区域中,该例程的开头进行标识。此外,将参数传递到子例程和函数使用 ByVal,除非您明确想要更改已传递的参数的值。 编写尽可能的模块化代码。例如对于如果您的应用程序显示一对话框将所有控件和执行在单个窗体中的对话框的任务所需的代码。这有助于组织到有用的组件的应用程序的代码,并最大限度地减少了其运行时开销。 第三方控件注: 下面讨论的产品是由独立的 Microsoft 的供应商生产的。Microsoft 使任何担保,或暗示或其他方式,这些产品的性能或可靠性。下表列出了标准的第三方供应商名称前缀字符与控件前缀一起使用: Vendor Abbv ------------------------- MicroHelp (VBTools) m Pioneer Software p Crescent Software c Sheridan Software s Other (Misc) o
Control Control Abbr Vendor Example VBX File
Type Name Name
--------------------------------------------------------------------------
Alarm Alarm almm MicroHelp almmAlarm MHTI200.VBX
Animate Animate anim MicroHelp animAnimate MHTI200.VBX
Callback Callback calm MicroHelp calmCallback MHAD200.VBX
Combo Box DB_Combo cbop Pioneer cbopComboBox QEVBDBF.VBX
Combo Box SSCombo cbos Sheridan cbosComboBox SS3D2.VBX
Check Box DB_Check chkp Pioneer chkpCheckBox QEVBDBF.VBX
Chart Chart chtm MicroHelp chtmChart MHGR200.VBX
Clock Clock clkm MicroHelp clkmClock MHTI200.VBX
Button Command cmdm MicroHelp cmdmCommandButton MHEN200.VBX
Button
Button DB_Command cmdp Pioneer cmdpCommandButton QEVBDBF.VBX
Button (Group) Command cmgm MicroHelp cmgmBtton MHGR200.VBX
Button
(multiple)
Button Command cmim MicroHelp cmimCommandButton MHEN200.VBX
Button
(icon)
CardDeck CardDeck crdm MicroHelp crdmCard MHGR200.VBX
Dice Dice dicm MicroHelp dicmDice MHGR200.VBX
List Box (Dir) SSDir dirs Sheridan dirsDirList SS3D2.VBX
List Box (Drv) SSDrive drvs Sheridan drvsDriveList SS3D2.VBX
List Box (File) File List film MicroHelp filmFileList MHEN200.VBX
List Box (File) SSFile fils Sheridan filsFileList SS3D2.VBX
Flip Flip flpm MicroHelp flpmButton MHEN200.VBX
Scroll Bar Form Scroll fsrm MicroHelp fsrmFormScroll ???
Gauge Gauge gagm MicroHelp gagmGauge MHGR200.VBX
Graph Graph gpho Other gphoGraph XYGRAPH.VBX
Grid Q_Grid grdp Pioneer grdpGrid QEVBDBF.VBX
Scroll Bar Horizontal hsbm MicroHelp hsbmScroll MHEN200.VBX
Scroll Bar
Scroll Bar DB_HScroll hsbp Pioneer hsbpScroll QEVBDBF.VBX
Graph Histo hstm MicroHelp hstmHistograph MHGR200.VBX
Invisible Invisible invm MicroHelp invmInvisible MHGR200.VBX
List Box Icon Tag itgm MicroHelp itgmListBox MHAD200.VBX
Key State Key State kstm MicroHelp kstmKeyState MHTI200.VBX
Label Label (3d) lblm MicroHelp lblmLabel MHEN200.VBX
Line Line linm MicroHelp linmLine MHGR200.VBX
List Box DB_List lstp Pioneer lstpListBox QEVBDBF.VBX
List Box SSList lsts Sheridan lstsListBox SS3D2.VBX
MDI Child MDI Control mdcm MicroHelp mdcmMDIChild ???
Menu SSMenu mnus Sheridan mnusMenu SS3D3.VBX
Marque Marque mrqm MicroHelp mrqmMarque MHTI200.VB
Picture OddPic odpm MicroHelp odpmPicture MHGR200.VBX
Picture Picture picm MicroHelp picmPicture MHGR200.VBX
Picture DB_Picture picp Pioneer picpPicture QEVBDBF.VBX
Property Vwr Property pvrm MicroHelp pvrmPropertyViewer MHPR200.VBX
Viewer
Option (Group) DB_RadioGroup radp Pioneer radqRadioGroup QEVBDBF.VBX
Slider Slider sldm MicroHelp sldmSlider MHGR200.VBX
Button (Spin) Spinner spnm MicroHelp spnmSpinner MHEN200.VBX
Spreadsheet Spreadsheet sprm MicroHelp sprmSpreadsheet MHAD200.VBX
Picture Stretcher strm MicroHelp strmStretcher MHAD200.VBX
Screen Saver Screen Saver svrm MicroHelp svrmSaver MHTI200.VBX
Switcher Switcher swtm MicroHelp swtmSwitcher ???
List Box Tag tagm MicroHelp tagmListBox MHEN200.VBX
Timer Timer tmrm MicroHelp tmrmTimer MHTI200.VBX
ToolBar ToolBar tolm MicroHelp tolmToolBar MHAD200.VBX
List Box Tree trem MicroHelp tremTree MHEN200.VBX
Input Box Input (Text) txtm MicroHelp inpmText MHEN200.VBX
Input Box DB_Text txtp Pioneer txtpText QEVBDBF.VBX
Scroll Bar Vertical vsbm MicroHelp vsbmScroll MHEN200.VBX
Scroll Bar
Scroll Bar DB_VScroll vsbp Pioneer vsbpScroll QEVBDBF.VBX
属性文章编号: 110264 - 最后修改: 2003年1月9日 - 修订: 1.1 这篇文章中的信息适用于:
机器翻译 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。 点击这里察看该文章的英文版: 110264
(http://support.microsoft.com/kb/110264/en-us/
)
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。 | 文章翻译
|





回到顶端








