加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB代码规范

(2011-12-21 16:28:35)
标签:

杂谈

分类: VB

1.VB中对字母大小写不敏感,但在程序设计编码过程中,一律按字母大小写敏感处理。

2.一律采用变量强制声明,即在“选项”对话框的“编辑器”标签中,复选“要求

   变量声明”选项。Option Explicit 语句要求在 Visual Basic 程序中声明所有的变量。

3.变量名命名约定

31.变量名应符合Visual Basic的基本变量名命名规定。

l  它们必须以字母开头。

l  它们不能超过 255 个字符。控件、窗体、类和模块的名字不能超过 40 个字符。

l  它们不能和受到限制的关键字同名。 如:Dim dtDate As Date

32.变量名的定义应有意义,一律使用英文字母进行拼写,不用汉语拼音。

如:是否表头 dim bHaveBody as boolean不要写成bbiaoti  strUserName而不是strYhm等。

      变量名=[作用域]_[类型][修饰词][名词]

33.变量名使用混合大小写,并以小写字母开头。

       如:Dim  lngTemp As Long

34.如果变量名使用多个单词,将修饰词放在前面,并且尽量拼写完整增加可

      读性。如:eleMaxElement,filCurrentFile 等。

       35.变量名大小应至少2~3个字母。(当作为循环变量时,可以使用单个字母。

             如:ijk等。)

       36.变量名中应有其类型的修饰前缀。
                  
下表列出一些类型修饰前缀,其它依次类推。

      子类型

前缀

示例

Boolean

b

bFound

Byte

byt

bytRasterData

Date(Time)

dt

dtStart

Double

dbl

dblTolerance

Integer

Int

intQuantity

Long

lng

lngDistance

Object

obj

objCurrent

Single

sng

sngAverage

Variant

var

varMyData

String

str

strFirstName

Currency

crr

crrTotal

 

       37.变量生存期(作用域)前缀的使用按下表所示。g的例示)

           

范围

前缀

例子

全局

g_

g_strUserName

模块级

m_

m_bCalcInProgress

本地到过程

dblVelocity

 

 

38.尽量不使用Variant类型变量。

       39.对于用户定义类型,应给每种类型一个它自己的三个字符的前缀。并且这

             些前缀是以"u" 开始的,例如,定义一个自定义类型


uRect 可以被用来作为一个用户定义的客户类型变量的前缀。

310.常量名全部使用大写,当常量名是用多个单词表示时单词之间应用下划线

      连起来。如


4.对象名命名约定

       41.所有对象名必须以小写字母开头,其后每一个单词都以大写字母开头

                 如:dlgFileOpen,mnuFileOpen

       42.应该用一致的前缀来命名对象,使人们容易识别对象的类型。

          附件1列出了Visual Basic 支持的一些推荐使用的控件对象前缀。
5
.函数名或过程名命名约定

       51.所有函数名或过程名必须以大写字母开头,尽量采用组合词表示其功能

          而且,函数名应该以一个动词起首。
                
如: CloseDialog,GetValue.UpdateBody

       52.对于函数名来说,最好能在其名字中包含其返回的类型。
         
如:IsEmpty返回类型是布尔值(Boolean)

第一章     代码布局格式约定

1.语句块之间至少空一行。

2.  同一层的语句应对齐。

3.  下一层的语句应缩进四个空格。

4.  一行只做一件事情。如:一行只定义一个变量,其余部分用于注释。

5.  对于较长的代码行应分行书写,续行应缩进四个空格。

   例如产生一个 SQL 字符串时,代码可写成如下形式:

Dim strQuery As String

strQuery = "SELECT *" _

    & " FROM Vouchers" _

    & " WHERE [Cardnumber] = '88'"


代码示例一

第二章     类型使用约定

1.  尽量不使用Integersingle;而使用LongDouble。(错误演示见代码示例一)

2.  任何时候不使用缺省声明 如定义变量为 dim strVendorName没有指定类型,这样缺剩为Variant

第三章     表达式约定

1.  提倡多使用圆括号,尽量使读者在30秒内理解表达式的意思。


2.  避免在表达式使用混合类型。


3.循环终止判断条件尽量容易满足,即不要造成死循环。

第四章     控制结构约定

1.  尽量避免使用goto控制型语句,多使用select case 情况语句。

2.  结构嵌套不超过7层。

 

第五章     函数及操作符使用约定

1.避免使用MSDN文档中,已标明过时了(obsolete)的函数。

2.优先使用值调用,然后考虑使用地址调用。(byval按值传递参数,byref按地址传递参数)

第六章     模块及访问约定

1.  一个模块只做一件事。

2.  模块名应能反映模块的功能。

如:modPublic.bas表示公共模块,clsVoucher.cls,cls.VoucherList等。

3.  模块中声明的变量的生存期应尽量短。在 Visual Basic 的应用程序中,只有当没有其它方便途径在窗体之间共享数据时才使用全局变量。当必须使用全局变量时,在一个单一模块中声明它们,并按功能分组。给这个模块取一个有意义的名称,以指明它的作用,如 modPublic.bas。注意mod里的全局变量不推荐使用,因为全局变量的生命周期存在于整个进程中,如果先后创建多个对象,变量会被后来创建的对象覆盖。

第七章     注释使用约定

1.  每一模块文件的开头,都应该有一段注释(banner),用于说明该模块的版权,文件名,开始编写日期,作者名,审核人名,最后一次修改日期,简单功能描述,改动描述等。(VB MZ-Tools Add-In工具支持自动添加注释)

2.  所有的过程和函数都应该以描述这段过程的功能的一段简明注释开始(这段例程干什么)。这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟---成为错误的注释。代码本身和必要的嵌入注释将描述实现方法。


3.  当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过程的参数。被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也必须在每个过程的起始处描述它们。

4.  过程头注释块应该包括下列标题。

 

  

           

目的

该过程完成什么(而不是怎么完成)。

假设

列出每个外部变量、控件、打开文件或其它不明显元素。

效果

列出每个被影响的外部变量、控件、或文件及其作用(只有当它不明显时)。

输入

每一个可能不明显的参数。参数分别在单独的行上,并嵌入注释。

返回

函数返回值的说明。

 

5.  每一个重要变量的声明应该包括一个嵌入注释,来描述该变量的使用。

6.  .Bas 模块包含工程的 Visual Basic 一般常量声明,在其起始处,应该包括描述应用程序的综述,列举主要数据对象、过程、算法、对话、数据库及系统需求。

具体例子见附件5

7.  函数(过程)代码中每一功能块应注释说明。

8.  select case语句的每一入口块(case),应加注释说明;并且必须包含Case Else 语句来处理不可预见的情况。

9.  在对象的定义或声明处应注释说明定义或声明该对象的目的。

10.  对于易产生误解的代码行,应单独加以注释。

11.  对关键性代码行,必须单独注释详细说明。

12 对于注释掉的代码段,在其前面应额外加注释来说明注释掉的原因。如果重用
   
该代码段,应去掉前面的注释说明。

第八章     错误处理约定

    错误处理程序是应用程序中捕获和响应错误的例程。对于预感可能会出错的任何过程(应该假定任何 Basic 语句都可能导致错误,除非确知情况并非如此),均要对这些过程添加错误处理程序。

第九章     其它

1.一个函数(过程)的代码行尽量不要超过200行。

2.一个模块文件尽量不要超过500行。

3.模块嵌套尽量不超过7层。

4.在不违背以上规范的情况下,如果能优化代码尽量优化它。
如:使用 For Each...Next 替代 For i...Next i

 


附件1

        

        

         

     3D Panel

      pnl

pnlGroup

ADO Data

ado

adoBiblio

Animated button

ani

aniMailBox

Check box

chk

chkReadOnly

Combo box, drop-down list box

cbo

cboEnglish

Command button

cmd

cmdExit

Common dialog

dlg

dlgFileOpen

Communications

com

comFax

Control (当特定类型未知时,在过程中所使用的)

ctr

ctrCurrent

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 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

   对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。只有当需要澄清时,才使用多于三个字符的前缀。

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有