VB编程的7个优良习惯.docx

上传人:b****7 文档编号:9463905 上传时间:2023-02-04 格式:DOCX 页数:12 大小:22.30KB
下载 相关 举报
VB编程的7个优良习惯.docx_第1页
第1页 / 共12页
VB编程的7个优良习惯.docx_第2页
第2页 / 共12页
VB编程的7个优良习惯.docx_第3页
第3页 / 共12页
VB编程的7个优良习惯.docx_第4页
第4页 / 共12页
VB编程的7个优良习惯.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

VB编程的7个优良习惯.docx

《VB编程的7个优良习惯.docx》由会员分享,可在线阅读,更多相关《VB编程的7个优良习惯.docx(12页珍藏版)》请在冰豆网上搜索。

VB编程的7个优良习惯.docx

VB编程的7个优良习惯

VB编程的七个优良习惯

作者:

木子

1、"&"替换"+"2、变量命名大小写,语句错落有秩,源代码维护方面

3、请养成以下的“对象命名约定”良好习惯4、在简单的选择条件情况下,使用IIf()函数

5、尽量使用Debug.Print进行调试6、在重复对某一对象的属性进行修改时,尽量使用With....EndWith

7、MsgBox中尽量使用消息图标,这样程序比较有规范8、在可能的情况下使用枚举

1、"&"替换"+"

在很多人的编程语言中,用“+”来连接字符串,这样容易导致歧义。

良好的习惯是用“&”来连接字符串.

不正确:

DimsMessageAsString

sMessage="1"+"2"

正确:

DimsMessageAsString

sMessage="1"&"2"

注意:

"&"的后面有个空格

2、变量命名大小写,语句错落有秩,源代码维护方面

下面大家比较一下以下两段代码:

读懂难度很大的代码:

DimSNAMEAsString

DimNTURNAsInteger

IfNTURN=0Then

IfSNAME="vbeden"Then

DoWhileNTURN<4

NTURN=NTURN+1

Loop

EndIf

EndIf

容易读懂的代码:

DimsNameAsString

DimnTurnAsInteger

IfnTurn=0Then

  IfsName="vbeden"Then

     DoWhilenTurn<4

         nTurn=nTurn+1

     Loop

  EndIf

EndIf

[返回索引]

3、请养成以下的“对象命名约定”良好习惯

推荐使用的控件前缀

控件类型

前缀

例子

3DPanel

pnl

pnlGroup

ADOData

ado

adoBiblio

Animatedbutton

ani

aniMailBox

Checkbox

chk

chkReadOnly

Combobox,drop-downlistbox

cbo

cboEnglish

Commandbutton

cmd

cmdExit

Commondialog

dlg

dlgFileOpen

Communications

com

comFax

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

ctr

ctrCurrent

Data

dat

datBiblio

Data-boundcombobox

dbcbo

dbcboLanguage

Data-boundgrid

dbgrd

dbgrdQueryResult

Data-boundlistbox

dblst

dblstJobType

Datacombo

dbc

dbcAuthor

Datagrid

dgd

dgdTitles

Datalist

dbl

dblPublisher

Datarepeater

drp

drpLocation

Datepicker

dtp

dtpPublished

Directorylistbox

dir

dirSource

Drivelistbox

drv

drvTarget

Filelistbox

fil

filSource

Flatscrollbar

fsb

fsbMove

Form

frm

frmEntry

Frame

fra

fraLanguage

Gauge

gau

gauStatus

Graph

gra

graRevenue

Grid

grd

grdPrices

Hierarchicalflexgrid

flex

flexOrders

Horizontalscrollbar

hsb

hsbVolume

Image

img

imgIcon

Imagecombo

imgcbo

imgcboProduct

ImageList

ils

ilsAllIcons

Label

lbl

lblHelpMessage

Lightweightcheckbox

lwchk

lwchkArchive

Lightweightcombobox

lwcbo

lwcboGerman

Lightweightcommandbutton

lwcmd

lwcmdRemove

Lightweightframe

lwfra

lwfraSaveOptions

Lightweighthorizontalscrollbar

lwhsb

lwhsbVolume

Lightweightlistbox

lwlst

lwlstCostCenters

Lightweightoptionbutton

lwopt

lwoptIncomeLevel

Lightweighttextbox

lwtxt

lwoptStreet

Lightweightverticalscrollbar

lwvsb

lwvsbYear

Line

lin

linVertical

Listbox

lst

lstPolicyCodes

ListView

lvw

lvwHeadings

MAPImessage

mpm

mpmSentMessage

MAPIsession

mps

mpsSession

MCI

mci

mciVideo

Menu

mnu

mnuFileOpen

Monthview

mvw

mvwPeriod

MSChart

ch

chSalesbyRegion

MSFlexgrid

msg

msgClients

MSTab

mst

mstFirst

OLEcontainer

ole

oleWorksheet

Optionbutton

opt

optGender

Picturebox

pic

picVGA

Pictureclip

clp

clpToolbar

ProgressBar

prg

prgLoadFile

RemoteData

rd

rdTitles

RichTextBox

rtf

rtfReport

Shape

shp

shpCircle

Slider

sld

sldScale

Spin

spn

spnPages

StatusBar

sta

staDateTime

SysInfo

sys

sysMonitor

TabStrip

tab

tabOptions

Textbox

txt

txtLastName

Timer

tmr

tmrAlarm

Toolbar

tlb

tlbActions

TreeView

tre

treOrganization

UpDown

upd

updDirection

Verticalscrollbar

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"标记以外,菜单控件的前缀应该被扩展:

对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。

下表列出了一些例子。

推荐使用的菜单前缀

菜单标题序列

菜单处理器名称

FileOpen

mnuFileOpen

FileSendEmail

mnuFileSendEmail

FileSendFax

mnuFileSendFax

FormatCharacter

mnuFormatCharacter

HelpContents

mnuHelpContents

当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在VisualBasic的“属性”窗口中。

而且,菜单控件的名字清楚地表示出它们所属的菜单项。

为其它控件选择前缀

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

只有当需要澄清时,才使用多于三个字符的前缀。

常量和变量命名约定

除了对象之外,常量和变量也需要良好格式的命名约定。

本节列出了VisualBasic支持的常量和变量的推荐约定。

并且讨论标识数据类型和范围的问题。

变量应该总是被定义在尽可能小的范围内。

全局(Public)变量可以导致极其复杂的状态机构,并且使一个应用程序的逻辑非常难于理解。

全局变量也使代码的重用和维护更加困难。

VisualBasic中的变量可以有下列范围

范围

声明位置

可见位置

过程级

过程,子过程或函数过程中的‘Private’

在声明它的过程中

模块级

窗体或代码模块(.frm、.bas)的声明部分中的‘Private’

窗体或代码模块中的每一个过程

全局

代码模块(.bas)的声明部分中的‘Public’

应用程序中的每一处

在VisualBasic的应用程序中,只有当没有其它方便途径在窗体之间共享数据时才使用全局变量。

当必须使用全局变量时,在一个单一模块中声明它们,并按功能分组。

给这个模块取一个有意义的名称,以指明它的作用,如Public.bas。

较好的编码习惯是尽可能写模块化的代码。

例如,如果应用程序显示一个对话框,就把要完成这一对话任务所需要的所有控件和代码放在单一的窗体中。

这有助于将应用程序的代码组织在有用的组件中,并减小它运行时的开销。

除了全局变量(应该是不被传递的),过程和函数应该仅对传递给它们的对象操作。

在过程中使用的全局变量应该在过程起始处的声明部分中标识出来。

此外,应该用ByVal将参数传递给Sub过程及function过程,除非明显地需要改变已传递的参数值。

随着工程大小的增长,划分变量范围的工作也迅速增加。

在类型前缀的前面放置单字母范围前缀标明了这种增长,但变量名的长度并没有增加很多。

变量范围前缀

范围

前缀

例子

全局

g

gstrUserName

模块级

m

mblnCalcInProgress

本地到过程

dblVelocity

如果一个变量在标准模块或窗体模块中被声明为Public,那么该变量具有全局范围。

如果一个变量在标准模块或窗体模块中被分别声明为Private,那么该变量有模块级范围。

注意:

一致性是卓有成效地使用这种技术的关键;VisualBasic中的语法检查器不会捕捉以"p."开头的模块级变量。

常量

常量名的主体是大小写混合的,每个单词的首字母大写。

尽管标准VisualBasic常量不包含数据类型和范围信息,但是象i、s、g和m这样的前缀对于理解一个常量的值和范围还是很有用的。

对于常量名,应遵循与变量相同的规则。

例如:

mintUserListMax'对用户列表的最大限制

'(整数值,本地到模块)

gstrNewLine'新行字符

'(字符串,应用程序全局使用)

变量

声明所有的变量将会节省编程时间,因为键入操作引起的错误减少了(例如,究竟是aUserNameTmp,还是sUserNameTmp,还是sUserNameTemp)。

在“选项”对话框的“编辑器”标签中,复选“要求变量声明”选项。

OptionExplicit语句要求在VisualBasic程序中声明所有的变量。

应该给变量加前缀来指明它们的数据类型。

而且前缀可以被扩展,用来指明变量范围,特别是对大型程序。

用下列前缀来指明一个变量的数据类型。

变量数据类型

数据类型

前缀

例子

String(字符串类型)

str

strFName

Integer(短整数类型)

int

intQuantity

Long(长整数类型)

lng

lngDistance

Single(单精度浮点数类型)

sng

sngAverage

Double(双精度浮点数类型)

dbl

dblTolerance

Boolean(布尔类型)

bln

blnFound

Byte(字节类型)

byt

bytRasterData

Date(日期类型)

dte

dteNow

Currency(货币计算与定点计算类型)

cur

curRevenue

Object(对象类型)

obj

objCurrent

Variant(变体类型)

vnt

vntCheckSum

描述变量和过程名

变量或过程名的主体应该使用大小写混合形式,并且应该足够长以描述它的作用。

而且,函数名应该以一个动词起首,如InitNameArray或CloseDialog。

对于频繁使用的或长的项,推荐使用标准缩略语以使名称的长度合理化。

一般来说,超过32个字符的变量名在VGA显示器上读起来就困难了。

当使用缩略语时,要确保它们在整个应用程序中的一致性。

在一个工程中,如果一会儿使用Cnt,一会儿使用Count,将导致不必要的混淆。

用户定义的类型

在一项有许多用户定义类型的大工程中,常常有必要给每种类型一个它自己的三个字符的前缀。

如果这些前缀是以"u"开始的,那么当用一个用户定义类型来工作时,快速识别这些类型是很容易的。

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

[返回索引]

4、在简单的选择条件情况下,使用IIf()函数

罗索的代码:

IfnNum=0Then

 sName="sancy"

Else

 sName="Xu"

EndIf

简单的代码:

sName=IIf(nNum=0,"sancy","Xu")

5、尽量使用Debug.Print进行调试

在很多初学者的调试中,用MsgBox来跟踪变量值.其实用Debug.Print不仅可以达到同样的功效,而且在程序最后编译过程中,会被忽略.而MsgBox必须手动注释或删除.

通常:

MsgBoxnName

应该:

Debug.PrintnName

6、在重复对某一对象的属性进行修改时,尽量使用With....EndWith

通常:

Form1.Height=5000

Form1.Width=6000

Form1.Caption="ThisisMyLabel"

应该:

WithForm1

 .Height=5000

 .Width=6000

 .Caption="ThisisMyLabel"

EndWith

这种结构程序执行效率比较高,特别在循环语句里。

7、MsgBox中尽量使用消息图标,这样程序比较有规范

一般来说

vbInformation用来提示确认或成功操作的消息

vbExclamation用来提示警告的消息

vbCritical用来提示危机情况的消息

vbQuestion用来提示询问的消息

[返回索引]

8、在可能的情况下使用枚举

枚举的格式为

[Public|Private]Enumname

membername[=constantexpression]

membername[=constantexpression]

....

EndEnum

Enum语句包含下面部分:

部分

描述

Public

可选的。

表示该Enum类型在整个工程中都是可见的。

Enum类型的缺省情况是Public。

Private

可选的。

表示该Enum类型只在所声明的模块中是可见的。

name

必需的。

该Enum类型的名称。

name必须是一个合法的VisualBasic标识符,在定义该Enum类型的变量或参数时用该名称来指定类型。

membername

必需的。

用于指定该Enum类型的组成元素名称的合法VisualBasic标识符。

constantexpression

可选的。

元素的值(为Long类型)。

可以是别的Enum类型。

如果没有指定constantexpression,则所赋给的值或者是0(如果该元素是第一个membername),或者比其直接前驱的值大1。

说明

所谓枚举变量,就是指用Enum类型定义的变量。

变量和参数都可以定义为Enum类型。

Enum类型中的元素被初始化为Enum语句中指定的常数值。

所赋给的值可以包括正数和负数,且在运行时不能改变。

例如:

EnumSecurityLevelIllegalEntry=-1SecurityLevel1=0SecurityLevel2=1EndEnum

Enum语句只能在模块级别中出现。

定义Enum类型后,就可以用它来定义变量,参数或返回该类型的过程。

不能用模块名来限定Enum类型。

类模块中的PublicEnum类型并不是该类的成员;只不过它们也被写入到类型库中。

在标准模块中定义的Enum类型则不写到类型库中。

具有相同名字的PublicEnum类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。

若不同的类型库中有两个Enum类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。

不能在With块中使用Enum类型作为目标。

Enum语句示例

下面的示例演示用Enum语句定义一个命名常数的集合。

在本例中是一些可以选择的颜色常数用于设计数据库的数据输入窗体。

PublicEnumInterfaceColors

icMistyRose=&HE1E4FF&

icSlateGray=&H908070&

icDodgerBlue=&HFF901E&

icDeepSkyBlue=&HFFBF00&

icSpringGreen=&H7FFF00&

icForestGreen=&H228B22&

icGoldenrod=&H20A5DA&

icFirebrick=&H2222B2&

EndEnum

好处是加快编程速度

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1