a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 97|回复: 1

[Visual Basic] 2011年计算机二级VB辅导知识总结(2)

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
  VB编程8个优良习惯( x/ V- I' q6 f( E, Z
  良好的程序设计风格是反映一个人的程序设计水平的问题,对一个程序来说,仅仅当提供正确的输入时才能产生正确的输出是不够的。一个设计得好的程序必须能在任何条件下,即在它运行过程中可能遇到的各种情况下都能正确地操作。应当把计算机程序设计得能够重复运行或连续运行;它必须很“耐用”,能够经得起偶然的或故意的错误使用。
0 M1 Z5 ?" H' a# g' p* s# M  1、"&"替换"+"' n( f( w2 p( I, o3 C
  在很多人的编程语言中,用“+”来连接字符串,这样容易导致歧义。良好的习惯是用“&”来连接字符串.& L8 h) h! B$ \- B/ S: n
  不正确:5 P" I4 V) C  J- m% ]$ e7 |! ?, I1 n
  Dim sMessage As String  S* r" S' C+ `/ r1 z* c  w, _+ K
  sMessage = "1" + "2"
* L/ Z: K9 A) y$ R0 K0 `  正确:7 W7 F0 A: l8 w( [4 t
  Dim sMessage As String
4 F* D8 }) z2 [  sMessage = "1" & "2"( a5 F+ j. C! u5 l+ ]! |# f$ i
  注意:"&"的后面有个空格
* V1 h  T* J. [! G8 k1 s2 O  2、变量命名大小写,语句错落有秩,源代码维护方面' F4 o/ a0 P  j) |* l5 x
  下面大家比较一下以下两段代码:% t! j& E% m& N/ @: V0 [7 N+ W
  读懂难度很大的代码:
' ?, D# a1 I5 C& T4 I  Dim SNAME As String
" f) Y  t2 ^8 H+ s* ~0 V% `3 A  Dim NTURN As Integer6 M. {) H2 w, C/ X
  If NTURN = 0 Then
0 C4 A2 ]: K: s8 g& m0 q$ W+ X. m0 t7 \  If SNAME = "vbeden" Then& G9 `. S' I& c7 J, F
  Do While NTURN < 4
/ t. H/ V, U3 t7 t  NTURN = NTURN + 1
# j$ R" ]& z+ V* I7 ^+ q$ c. z: z  Loop
8 k8 i# k( o- K0 f  End If
! C! S1 ]+ c6 j0 f9 o: d  End If' R( R6 p3 i" E5 T" ~" m$ g
  容易读懂的代码:! M2 `6 b# y* E9 i1 `2 v# x
  Dim sName As String# m$ h" ]; b6 [' V. g. R
  Dim nTurn As Integer
' d) {  o1 }- s' V% O  If nTurn = 0 Then0 a. P8 E+ S( u0 N0 G1 _, H# a
  If sName = "vbeden" Then. Q! m, q; T! _: P; B% C
  Do While nTurn < 4; I; M+ L8 n' g2 y0 U: R: t6 d
  nTurn = nTurn + 1
9 u3 v$ ~+ s' j, u  Loop
& ^1 c) s9 |% d/ `" a  End If
8 y6 n) Y# L8 N: k$ Y, F& n4 i/ m  End If- m$ I3 v% R7 h' }
  3、请养成以下的“对象命名约定”良好习惯
( ]5 Z; o( p9 x8 u* J  推荐使用的控件前缀
0 t  [: `# q7 _! T. i: ^# H& o5 r  控件类型 前缀 例子
- @/ u7 q) j$ \: q" o4 N  复选框Check box chk chkReadOnly( o: j2 @9 c5 v! H; q
  组合框Combo box cbo cboEnglish
6 G+ U7 S  Y/ [' x- W  命令按钮Command button cmd cmdExit0 J+ X/ y3 a# I# v7 R
  通用对话框Common dialog dlg dlgFileOpen
0 N. r1 b5 `9 U0 O* c4 U+ [+ j  目录列表框Directory list box dir dirSource
, S/ }. u" ]0 {. U/ l  驱动器列表框Drive list box drv drvTarget( c/ b) M! }2 G
  文件列表框File list box fil filSource0 E( R) P% A0 c0 O2 Q  z
  窗体Form frm frmEntry. J' j7 z: _% e+ @. k; g8 W
  图象框Image img imgIcon6 x/ \2 @3 y0 p* P
  标签Label lbl lblHelpMessage0 S/ j: j" c# ^' p! K# H
  列表框List box lst lstPolicyCodes" m" E( f) X/ F- s
  菜单Menu mnu mnuFileOpen
  H% F9 ~: m2 E9 r. u  单选按钮Option button opt optGender  Z# f( i/ V' f3 b
  图片框Picture box pic picVGA8 `# o, l5 u$ t
  文本框Text box txt txtLastName
: i! Q: I9 Q" v. F6 {' \& g$ [) c  时钟控件Timer tmr tmrAlarm/ K* n7 V" w) V4 k
  变量+ _  n% ~5 ]! F1 H- r2 U: L* L" Q
  声明所有的变量将会节省编程时间,因为键入操作引起的错误减少了(例如,究竟是 aUserNameTmp,还是 sUserNameTmp,还是 sUserNameTemp)。在“选项”对话框的“编辑器”标签中,复选“要求变量声明”选项。Option Explicit 语句要求在 Visual Basic 程序中声明所有的变量。+ X% T! S' ?' j6 z7 r
  应该给变量加前缀来指明它们的数据类型。而且前缀可以被扩展,用来指明变量范围,特别是对大型程序。
8 Q7 w. F. h3 U  B  用下列前缀来指明一个变量的数据类型。/ e- z# Z8 E1 h. a5 p
  变量数据类型) `! M+ B- e5 G! J
  数据类型 前缀 例子' s5 R- a, l) r8 P. m& X
  String (字符串类型) str strFName
8 k  }# i8 E# q  i" O1 `7 j: w  Integer (短整数类型) int intQuantity
6 u0 J- X' m( |* t  Long (长整数类型) lng lngDistance* r- v4 O4 s5 O5 `1 ^
  Single (单精度浮点数类型) sng sngAverage
( `$ P' |* c1 Q  Double (双精度浮点数类型) dbl dblTolerance
+ J* P, b$ h* j  Boolean (布尔类型) bln blnFound
: b0 K+ @+ c' k! {2 H, V' b  Byte(字节类型) byt bytRasterData9 a( J6 A( D( h" v
  Date (日期类型) dte dteNow( _/ ~0 i* k& W7 _
  Currency (货币类型) cur curRevenue
; S3 A9 J" R/ K5 b! B7 l  Object (对象类型) obj objCurrent
0 y+ ]. k0 ~% C# L; F" ]5 V6 V, l* i  Variant (变体类型) vnt vntCheckSum# U! N: |1 P' K; A/ }% d
  4、在简单的选择条件情况下,使用IIf()函数7 W& v; o# I  U0 {' q
  繁琐的代码:
6 @. R/ G3 }. @* o) m  If nNum = 0 Then! {% K+ W7 j# u7 w! g* T
  sName = "sancy"* y2 `0 x* [/ d" W, K
  Else" D6 o7 V  h# M7 X5 m! S
  sName = "Xu"
& s1 K$ Y$ B1 f3 L5 B) e  End If
/ y( B) a6 ]* A+ L: B' Z% I9 O* ~% @  简单的代码:" C( T5 k6 {5 m' k
  sName=IIf(nNum=0,"sancy","Xu")
7 g8 E0 t1 y. Q! B5 u  5、尽量使用Debug.Print进行调试
. ]$ Z& |8 Z2 x# w# I9 R  在很多初学者的调试中,用MsgBox来跟踪变量值.其实用Debug.Print不仅可以达到同样的功效,而且在程序最后编译过程中,会被忽略.而MsgBox必须手动注释或删除.
& a+ A; Z( N6 V, D; \; l; U  通常:' }1 D4 `+ [; W4 S
  MsgBox nName
. T! k9 c( J; g! i  应该:
4 Z6 G; R5 H- L1 o5 i  Debug.Print nName
3 n. }$ O0 p. F+ i  6、在重复对某一对象的属性进行修改时,尽量使用With....End With
: }, i: i7 D- j1 x9 ^  通常:
1 E  \9 v' n7 J2 e  Form1.Height = 5000
: @# |$ S2 n1 {6 R  Form1.Width = 60004 d: z# m' r5 D. G
  Form1.Caption = "This is MyLabel"% I) Q; n- ?2 `) r& C$ x* N
  应该:. Z  p" V% U6 y& }5 G( X
  With Form11 g0 {1 b# B$ Y
  .Height = 5000
# H! w2 s7 y# J- G$ Z  .Width = 6000
0 D8 k& k. s- r0 c, X9 M" \7 p5 ?  .Caption = "This is MyLabel"+ d- Y+ a. t! ~  _  G' _4 p
  End With
2 V  Y+ U* ^4 L  这种结构程序执行效率比较高,特别在循环语句里  u4 W% z8 M5 P

4 z2 @- L8 }  n/ e7 i. v& j  7、MsgBox中尽量使用消息图标,这样程序比较有规范
0 I1 o5 q, b" l# I  一般来说# s; U0 M6 z8 Q1 [/ c1 t
  vbInformation 用来提示确认或成功操作的消息* {, [% G* v, O' [+ q1 b) {; C
  vbExclamation 用来提示警告的消息
4 o0 G" f7 G! S+ z9 n) W* i& Y9 W  vbCritical 用来提示危机情况的消息2 o; `( ~( F$ f
  vbQuestion 用来提示询问的消息
1 U+ b+ p7 F! E; h  8、在可能的情况下使用枚举
; E. f: O4 ]  G- b+ R  枚举的格式为* d* p0 r( X# q" F( D
  [Public | Private] Enum name
* c4 l: A" R* R  membername [= constantexpression]% M3 R* G' ?) p3 K/ r+ K+ D1 |# P
  membername [= constantexpression]. M6 \; |% J8 {. d  |
  ....
6 l/ m& |* ]3 m/ i' M  End Enum! x' s# c3 i# m* Q7 N2 T" V
  Enum 语句包含下面部分:6 o1 c1 d) M5 R0 r
  部分 描述
6 c1 p! S' ^# z0 O/ W/ V& @& [6 A8 a  Public 可选的。表示该 Enum 类型在整个工程中都是可见的。Enum 类型的缺省情况是 Public。
, x' A2 x8 Q" H! V; j  Private 可选的。表示该 Enum 类型只在所声明的模块中是可见的。
' W6 f6 T8 n, V# b  name 必需的。该 Enum 类型的名称。name 必须是一个合法的 Visual Basic 标识符,在定义该 Enum 类型的变量或参数时用该名称来指定类型。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 22:10:13 | 显示全部楼层

2011年计算机二级VB辅导知识总结(2)

  membername 必需的。用于指定该 Enum 类型的组成元素名称的合法 Visual Basic 标识符。0 K  B+ }# }# m( C
  constantexpression 可选的。元素的值(为 Long 类型)。可以是别的 Enum 类型。如果没有指定 constantexpression,则所赋给的值或者是 0(如果该元素是第一个 membername),或者比其直接前驱的值大 1。
  A% H, Y0 p+ B  说明
( Q; C+ D$ t+ n) v0 a  所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:6 k; F7 h8 S$ e% ^/ o) ~
  Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum' G$ e7 _( |/ K
  Enum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型。类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。
9 s+ |2 Y; Z3 c# g6 k  不能在 With 块中使用 Enum 类型作为目标。0 R3 I0 H9 l1 V- `  t/ i0 c
  Enum 语句示例
- D6 s, y& ^# g3 i* Z1 O  下面的示例演示用 Enum 语句定义一个命名常数的集合。在本例中是一些可以选择的颜色常数用于设计数据库的数据输入窗体。
; Y$ D  J, o2 x$ L  Public Enum InterfaceColors
2 t& t. r! e' ]5 L  icMistyRose = &HE1E4FF&
8 s: o5 N* D  X3 P+ f+ m$ ]% j  icSlateGray = &H908070&
" }" }2 x0 t1 `& ?$ [9 v# U  icDodgerBlue = &HFF901E&+ [3 m7 F  U1 m  }
  icDeepSkyBlue = &HFFBF00&& u) B' R6 N. K. x- b' u: e" G
  icSpringGreen = &H7FFF00&. j, z! r* U3 g: V3 J3 S! g9 o
  icForestGreen = &H228B22&5 _* X# k: S$ M9 E! k& b
  icGoldenrod = &H20A5DA&
+ e6 v) A6 p# S# i" m  icFirebrick = &H2222B2&
! m$ o& O; W) E& h3 ]' s" k# x; t  End Enum3 h; l# A# _) @: O+ ~9 f
  好处是加快编程速度</p>
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 08:07 , Processed in 0.412248 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表