设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2871|回复: 3
打印 上一主题 下一主题

VB编程的七个优良习惯

[复制链接]

9

主题

0

好友

104

积分

版主

Rank: 7Rank: 7Rank: 7

生肖
星座
狮子座
性别
跳转到指定楼层
楼主
发表于 2013-11-6 06:39:44 |只看该作者 |正序浏览
本帖最后由 sky_yx 于 2015-12-30 14:19 编辑

来源:不详 更新时间:2005-8-6 30[/table]1"&"替换"+"
在很多人的编程语言中,用“+”来连接字符串,这样容易导致歧义。良好的习惯是用“&”来连接字符串.
不正确:
Dim sMessage As String
sMessage = "1" + "2"
正确:
Dim sMessage As String
sMessage = "1" & "2"
注意:"&"的后面有个空格
2、变量命名大小写,语句错落有秩,源代码维护方面

下面大家比较一下以下两段代码:
读懂难度很大的代码:
Dim SNAME As String
Dim NTURN As Integer
If NTURN = 0 Then
If SNAME = "vbeden" Then
Do While NTURN < 4
NTURN = NTURN + 1
Loop
End If
End If
容易读懂的代码:
Dim sName As String
Dim nTurn As Integer
If nTurn = 0 Then
   If sName = "vbeden" Then
      Do While nTurn < 4
          nTurn = nTurn + 1
      Loop
   End If
     推荐使用的控件前缀   
   
控件类型
  
前缀
  
例子

   
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

  推荐使用的数据访问对象 (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" 标记以外,菜单控件的前缀应该被扩展:对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。下表列出了一些例子。
  推荐使用的菜单前缀  
菜单标题序列
菜单处理器名称
File Open
mnuFileOpen
File Send Email
mnuFileSendEmail
File Send Fax
mnuFileSendFax
Format Character
mnuFormatCharacter
Help Contents
mnuHelpContents
当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在 Visual Basic 属性窗口中。而且,菜单控件的名字清楚地表示出它们所属的菜单项。为其它控件选择前缀对于上面没有列出的控件,应该用唯一的由两个或三个字符组成的前缀使它们标准化,以保持一致性。只有当需要澄清时,才使用多于三个字符的前缀。常量和变量命名约定除了对象之外,常量和变量也需要良好格式的命名约定。本节列出了 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,那么该变量有模块级范围。注意: 一致性是卓有成效地使用这种技术的关键;VisualBasic 中的语法检查器不会捕捉以 "p." 开头的模块级变量。常量
常量名的主体是大小写混合的,每个单词的首字母大写。尽管标准 Visual Basic 常量不包含数据类型和范围信息,但是象 isg m 这样的前缀对于理解一个常量的值和范围还是很有用的。对于常量名,应遵循与变量相同的规则。例如:mintUserListMax   '对用户列表的最大限制                  '(整数值,本地到模块)gstrNewLine       '新行字符                  '(字符串,应用程序全局使用)变量
声明所有的变量将会节省编程时间,因为键入操作引起的错误减少了(例如,究竟是 aUserNameTmp,还是sUserNameTmp,还是 sUserNameTemp)。在选项对话框的编辑器标签中,复选要求变量声明选项。OptionExplicit 语句要求在 Visual Basic 程序中声明所有的变量。应该给变量加前缀来指明它们的数据类型。而且前缀可以被扩展,用来指明变量范围,特别是对大型程序。用下列前缀来指明一个变量的数据类型。
  变量数据类型  
数据类型
前缀
例子
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,将导致不必要的混淆。用户定义的类型
罗索的代码:
If nNum = 0 Then
  sName = "sancy"
Else
  sName = "Xu"
End If
简单的代码:
sName=IIf(nNum=0,"sancy","Xu")
5、尽量使用Debug.Print进行调试
在很多初学者的调试中,MsgBox来跟踪变量值.其实用Debug.Print不仅可以达到同样的功效,而且在程序最后编译过程中,会被忽略.MsgBox必须手动注释或删除.
通常:
MsgBox nName
应该:
Debug.Print nName
6、在重复对某一对象的属性进行修改时,尽量使用With....End With通常:
Form1.Height = 5000
Form1.Width = 6000
Form1.Caption = "This is MyLabel"
应该:
With Form1
  .Height = 5000
  .Width = 6000
  .Caption = "This is MyLabel"
End With
这种结构程序执行效率比较高,特别在循环语句里。
7MsgBox中尽量使用消息图标,这样程序比较有规范
一般来说
vbInformation
用来提示确认或成功操作的消息
vbExclamation
用来提示警告的消息
vbCritical
用来提示危机情况的消息
枚举的格式为
[Public | Private] Enum name
membername
[= constantexpression]
membername
[= constantexpression]
....
End Enum
Enum 语句包含下面部分:
  部分  
描述
Public
可选的。表示该 Enum 类型在整个工程中都是可见的。Enum 类型的缺省情况是 Public
Private
可选的。表示该 Enum 类型只在所声明的模块中是可见的。
name
必需的。该 Enum 类型的名称。name 必须是一个合法的 Visual Basic 标识符,在定义该 Enum 类型的变量或参数时用该名称来指定类型。
membername
必需的。用于指定该 Enum 类型的组成元素名称的合法 Visual Basic 标识符。
constantexpression
可选的。元素的值(为 Long 类型)。可以是别的 Enum 类型。如果没有指定 constantexpression,则所赋给的值或者是 0(如果该元素是第一个 membername),或者比其直接前驱的值大 1
说明
所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:Enum SecurityLevel IllegalEntry = -1SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum Enum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。不能在 With 块中使用 Enum 类型作为目标。Enum 语句示例
下面的示例演示用 Enum 语句定义一个命名常数的集合。在本例中是一些可以选择的颜色常数用于设计数据库的数据输入窗体。Public EnumInterfaceColors
icMistyRose = &HE1E4FF&
icSlateGray = &H908070&
icDodgerBlue = &HFF901E&
icDeepSkyBlue = &HFFBF00&
icSpringGreen = &H7FFF00&
icForestGreen = &H228B22&
icGoldenrod = &H20A5DA&
icFirebrick = &H2222B2&
End Enum
好处是加快编程速度

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分

9

主题

0

好友

104

积分

版主

Rank: 7Rank: 7Rank: 7

生肖
星座
狮子座
性别
地板
发表于 2013-11-6 10:49:18 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:19 编辑

我也觉得很有用,写代码好看多了

回复

使用道具 评分 举报

10

主题

4

好友

843

积分

版主

Rank: 7Rank: 7Rank: 7

生肖
星座
双鱼座
性别

最佳新人 活跃会员

板凳
发表于 2013-11-6 09:29:03 |只看该作者
本帖最后由 sky_yx 于 2015-12-30 14:19 编辑

真心的不错中,希望继续跟进
可以帮助我们改掉一些小习惯

人生若只如初见,何事西风悲画扇
回复

使用道具 评分 举报

22

主题

8

好友

1898

积分

超级版主

Rank: 8Rank: 8

生肖
星座
天秤座
性别

最佳新人 活跃会员 热心会员 灌水之王 突出贡献 优秀版主

沙发
发表于 2013-11-6 09:14:19 |只看该作者
虽然我不懂VB 但是看着还不错,好贴必须顶。
人都有一段故事,没有精彩与否,只有感人与否
回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-12-22 19:56 , Processed in 0.158575 second(s), 27 queries .

回顶部