微软有个推荐的命名法则去查查MSDN

解决方案 »

  1.   

    现在都采用匈牙利法则,例如主窗体:frmMain,控件的前缀:
    文本框:txt
    标签:lbl
    下拉列表框:cmb
    命令按钮:cmd
    ······
      

  2.   

    [名称]           编码约定--常量和变量命名约定[语言种类]       各种文档[类别一]         软件工程[类别二]         空[类别三]         空[数据来源]       未知[保存时间]       2002-02-28[关键字一]       编码约定[关键字二]       命名约定[关键字三]       常量和变量[内容简介]       空[源代码内容]除了对象之外,常量和变量也需要良好格式的命名约定。本节列出了 Visual Basic 支持的常量和变量的推荐约定。并且讨论标识数据类型和范围的问题。变量应该总是被定义在尽可能小的范围内。全局 (Public) 变量可以导致极其复杂的状态机构,并且使一个应用程序的逻辑非常难于理解。全局变量也使代码的重用和维护更加困难。Visual Basic 中的变量可以有下列范围:范围 声明位置 可见位置 
    过程级 过程,子过程或函数过程中的 ‘Private’ 在声明它的过程中 
    模块级 窗体或代码模块(.frm、.bas )的声明部分中的 ‘Private’ 窗体或代码模块中的每一个过程 
    全局 代码模块(.bas)的声明部分中的 ‘Public’ 应用程序中的每一处 
    在 Visual Basic 的应用程序中,只有当没有其它方便途径在窗体之间共享数据时才使用全局变量。当必须使用全局变量时,在一个单一模块中声明它们,并按功能分组。给这个模块取一个有意义的名称,以指明它的作用,如 Public.bas。较好的编码习惯是尽可能写模块化的代码。例如,如果应用程序显示一个对话框,就把要完成这一对话任务所需要的所有控件和代码放在单一的窗体中。这有助于将应用程序的代码组织在有用的组件中,并减小它运行时的开销。除了全局变量(应该是不被传递的),过程和函数应该仅对传递给它们的对象操作。在过程中使用的全局变量应该在过程起始处的声明部分中标识出来。此外,应该用 ByVal 将参数传递给 Sub 过程及 function 过程,除非明显地需要改变已传递的参数值。变量范围前缀
    随着工程大小的增长,划分变量范围的工作也迅速增加。在类型前缀的前面放置单字母范围前缀标明了这种增长,但变量名的长度并没有增加很多。范围 前缀 例子 
    全局 g gstrUserName 
    模块级 m mblnCalcInProgress 
    本地到过程 无 dblVelocity 
    如果一个变量在标准模块或窗体模块中被声明为 Public,那么该变量具有全局范围。如果一个变量在标准模块或窗体模块中被分别声明为 Private,那么该变量有模块级范围。注意   一致性是卓有成效地使用这种技术的关键;Visual Basic 中的语法检查器不会捕捉以 "p." 开头的模块级变量。常量
    常量名的主体是大小写混合的,每个单词的首字母大写。尽管标准 Visual Basic 常量不包含数据类型和范围信息,但是象 i、s、g 和 m 这样的前缀对于理解一个常量的值和范围还是很有用的。对于常量名,应遵循与变量相同的规则。例如:mintUserListMax      '对用户列表的最大限制
                      '(整数值,本地到模块)
    gstrNewLine            '新行字符
                      '(字符串,应用程序全局使用)变量
    声明所有的变量将会节省编程时间,因为键入操作引起的错误减少了(例如,究竟是 aUserNameTmp,还是 sUserNameTmp,还是 sUserNameTemp)。在“选项”对话框的“编辑器”标签中,复选“要求变量声明”选项。Option Explicit 语句要求在 Visual Basic 程序中声明所有的变量。应该给变量加前缀来指明它们的数据类型。而且前缀可以被扩展,用来指明变量范围,特别是对大型程序。变量数据类型
    用下列前缀来指明一个变量的数据类型。数据类型 前缀 例子 
    Boolean bln blnFound 
    eanB byt bytRasterData 
    nByteCollection o col colWidgets 
    ection o cur curRevenue 
    on objectCu dtm dtmStart 
    ectCur dbl dblTolerance 
    Curre err errOrderNum 
    rencyDa int intQuantity 
    yDat lng lngDistance 
    Object obj objCurrent 
    ectSin sng sngAverage 
    Single str strFName 
    gleStringUser-def udt udtEmployee 
    User-de vnt vntCheckSum 
    描述变量和过程名
    变量或过程名的主体应该使用大小写混合形式,并且应该足够长以描述它的作用。而且,函数名应该以一个动词起首,如 InitNameArray 或 CloseDialog。对于频繁使用的或长的项,推荐使用标准缩略语以使名称的长度合理化。一般来说,超过 32 个字符的变量名在 VGA 显示器上读起来就困难了。当使用缩略语时,要确保它们在整个应用程序中的一致性。在一个工程中,如果一会儿使用 Cnt, 一会儿使用 Count,将导致不必要的混淆。用户定义的类型
    在一项有许多用户定义类型的大工程中,常常有必要给每种类型一个它自己的三个字符的前缀。如果这些前缀是以 "u" 开始的,那么当用一个用户定义类型来工作时,快速识别这些类型是很容易的。例如,ucli 可以被用来作为一个用户定义的客户类型变量的前缀。
         以上代码保存于: SourceCode Explorer(源代码数据库)
               复制时间: 2002-11-15 21:56
               软件版本: 1.0.753
               软件作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729
      

  3.   

    [名称]           编码约定--结构化编码约定[语言种类]       各种文档[类别一]         软件工程[类别二]         空[类别三]         空[数据来源]       未知[保存时间]       2002-02-28[关键字一]       编码约定[关键字二]       结构化[关键字三]       空[内容简介]       空[源代码内容]除了命名约定外,结构化编码约定,可以极大地改善代码的可读性,如代码注释和一致性缩进。代码注释约定
    所有的过程和函数都应该以描述这段过程的功能的一段简明注释开始(这段例程干什么)。这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟—成为错误的注释。代码本身和必要的嵌入注释将描述实现方法。当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过程的参数。被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也必须在每个过程的起始处描述它们。过程头注释块应该包括下列节标题。关于例子,请参阅下节“格式化代码”。节标题 注释描述 
    目的 该过程完成什么(而不是怎么完成)。 
    假设 列出每个外部变量、控件、打开文件或其它不明显元素。 
    效果 列出每个被影响的外部变量、控件、或文件及其作用(只有当它不明显时)。 
    输入 每一个可能不明显的参数。参数分别在单独的行上,并嵌入注释。 
    返回 函数返回值的说明。 
    记住下列几点: 每一个重要变量的声明应该包括一个嵌入注释,来描述该变量的使用。
    变量、控件及过程的命名应该足够清楚,使得只有复杂的执行细节才需要嵌入注释。
    .Bas 模块包含工程的 Visual Basic 一般常量声明,在其起始处,应该包括描述应用程序的综述,列举主要数据对象、过程、算法、对话、数据库及系统需求。有时,一段描述算法的伪码可能会有所帮助。 
    格式化代码
    因为许多程序员仍然使用 VGA 显示器,所以在允许代码格式来反映逻辑结构和嵌套的同时,应尽可能地省屏幕空间。下面列出几点: 标准的、基于制表位的嵌套块应该被缩进四个空格(缺省情况下)。
    过程的功能综述注释应该缩进一个空格。跟在综述注释后面的最高级的语句应该缩进一个制表位,而每一个嵌套的块再缩进一个制表位。例如: 
    '*****************************************************
    '目的:      在用户列表数组中找出
    '            一个指定用户的第一次出现位置。
    '输入:
    '   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给常量分组
    变量和定义的常量应该按功能分组,而不是分散到单独区域或特定文件中。Visual Basic 一般常量应该在单一模块中分组,以将它们与应用程序特定的声明分开。& 和 + 运算符
    在连接字符串时总是使用 & 运算符,而当处理数值时常用 + 运算符。当在两个变体上操作时,用 + 运算符来连接可能会导致问题。例如:vntVar1 = "10.01"
    vntVar2 = 11
    vntResult = vntVar1 + vntVar2    'vntResult = 21.01
    vntResult = vntVar1 & vntVar2   'vntResult = 10.0111为 MsgBox、InputBox 及 SQL 查询创建字符串
    当产生长字符串时,使用下划线连接字符产生多行代码,这样便于阅读或调试字符串。当显示一个消息框 (MsgBox) 或输入框 (InputBox),或产生一个 SQL 字符串时,这一技术特别有用。例如:Dim Msg As String
    Msg = "This is a paragraph that will be " _
    & "in a message box. The text is" _
    & " broken into several lines of code" _
    & " in the source code, making it easier" _
    & " for the programmer to read and debug."
    MsgBox MsgDim QRY As String
    QRY = "SELECT *" _
    & " FROM Titles" _
    & " WHERE [Year Published] > 1988"
    TitlesQry.SQL = QRY
         以上代码保存于: SourceCode Explorer(源代码数据库)
               复制时间: 2002-11-15 21:58
               软件版本: 1.0.753
               软件作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729
      

  4.   

    [名称]           命名约定--对象命名约定[语言种类]       各种文档[类别一]         软件工程[类别二]         空[类别三]         空[数据来源]       未知[保存时间]       2002-02-28[关键字一]       对象[关键字二]       命名约定[关键字三]       空[内容简介]       空[源代码内容]应该用一致的前缀来命名对象,使人们容易识别对象的类型。下面列出了 Visual Basic 支持的一些推荐使用的对象约定。推荐使用的控件前缀
    控件类型 前缀 例子 
    3D Panel  pnl pnlGroup 
    Animated button ani aniMailBox 
    Combo box, drop-down list box cbo cboEnglish 
    Command button cmd cmdExit 
    Common dialog  dlg dlgFileOpen 
    Communications  com comFax 
    Control (当特定类型未知时,在过程中所使用的) ctr ctrCurrent 
    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 button lwcmd lwcmdRemove 
    Lightweight frame lwfra lwfraSaveOptions 
    Lightweight horizontal scroll bar lwhsb lwhsbVolume 
    Lightweight list box lwlst lwlstCostCenters 
    Lightweight option button lwopt lwoptIncomeLevel 
    Lightweight text box lwtxt lwoptStreet 
    Lightweight vertical scroll bar lwvsb lwvsbYear 
    Line lin linVertical 
    List box lst lstPolicyCodes 
    ListView lvw lvwHeadings 
    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 
    推荐使用的数据访问对象 (DAO) 的前缀
    用下列前缀来指示数据访问对象。数据库对象 前缀 例子 
    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 推荐使用的菜单前缀
    应用程序频繁使用许多菜单控件,对于这些控件具备一组唯一的命名约定很实用。除了最前面 "mnu" 标记以外,菜单控件的前缀应该被扩展:对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在 Visual Basic 的“属性”窗口中。而且,菜单控件的名字清楚地表示出它们所属的菜单项。为其它控件选择前缀
    对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。只有当需要澄清时,才使用多于三个字符的前缀。例如,对于派生的或修改的控件象上述那样扩展其前缀,使得在真正使用了哪一个控件的问题上避免混淆。对于第三方控件,应该把制造商的小写缩写名附加到前缀中。例如,从 Visual Basic Professional 3D 框架中创建的一个控件实例可以用 fra3d 这样的前缀,以避免混淆所使用的控件。
         以上代码保存于: SourceCode Explorer(源代码数据库)
               复制时间: 2002-11-15 21:58
               软件版本: 1.0.753
               软件作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729
      

  5.   

    书上抄来的闷不闷啊?我最不喜欢的就是三个字母的缩写了。全局变量 p_ 开头
    模块变量 m_ 开头
    参数 v 开头
    函数内部变量 o_ 开头(因为和存储过程的样子差不多)数字一律使用 Long 型,不用Int。