VB6开发领航的方法
VB6开发领航
Visual Basic 6以友好易学的可视化开发环境闻名于世,成为人们学习计算机编程的首选语言。大学课堂、培训机构都把她列入了教学内容。问许多刚学程序设计人,他们会什么?他们一般会回答:“我会VB1但是,你要让他们用VB解决一些实际问题,我们就不说大型的软件,就是一个小小的进销存,他们做起来都会觉得吃力!设计不合理,BUG不断,客户需求的变化,软件不可避免地改动,可能会使用一个进销存软件陷入“泥潭”!如果开发一个大型软件,可以想象业务流程的繁锁,功能模块的复杂,用户需求多样化,许多开发小组都有可能陷入这个“焦油坑”(《人月神话》里比喻)。
笔者用VB进行了三年的软件开发,参与设计开发过十几个软件产品,曾为天津市外经贸委计算中心、天津通用软件有限公司主持过一些大型项目,特总结了VB开发之道,如果你正在用VB,但愿对你有所帮助:
第一章 良好的开始是成功的一半
Ø 扎实的基本功
掌握操作系统、数据结构、数据库、软件工程、高等数学等知识,这些基础知识都是在大学学来的,只要基础扎实,这就达到了这一点的要求。如果一个高中生,对软件开发又有极大的热情,那就得花大力补习这些知识。
Ø 兴趣是最好的老师
如果你对编程感兴趣,又渴望开发的软件,掌握一门编程语言是最为重要的了!在学习程序的过程中,会遇到很多的困难,如果你没有兴趣和耐心,是写不好程序的!
Ø 养成好的编程风格和习惯
1. 程序结构清淅,适当地加上注释
为每个过程加上注释
为过程中语句中加上适当注释
在IF…….ENDIF、FOR……Next,Do……While,Select Case……End Select等循环,分支,条件语句进行缩进。
2. 规范地进行控件和变量命令
推荐使用以下方式进行命名:
在编程过程中,虽然不定义变量类型,VB会自动判断,便效率低,尽量在程序设计时定义变量。最好在模块最上方加上Option Explicit语句,这样强制必须定义变量。
Ø 提高代码的可读性
比如:
Rs.Open "Select * From table", CN, 1, 1
就不如Rs.Open "Select * From table", CN, adOpenDynamic, adLockBatchOptimistic更易读
Ø 注意释放资源
如果用到了如Recordset记录集,注意在Form_Unload事件中释放它
Ø 编写高质量的代码
比如尽量少定义Variant变量,在知道变量是整型时,不要定义为double型等 。
一个最常见的例子:
-
Dim str(400) As String
-
For I = 0 To 400
-
str(I) = "第" & I & "个"
-
Text1.Text = Text1.Text & str(I)
-
Next
-
Dim str(400) As String
-
Dim strOut As String
-
For I = 0 To 400
-
str(I) = "第" & I & "个"
-
strOut = strOut & str(I)
-
Next
-
Text1.Text = strOut
上面两段代码,第一段代码循环取Text属性,第二段代码用循环给变量strOut累计,最后赋值给Text属性。虽然两段代码都得到一样的结果,但是前者的速度就没法与后者相比。要知道存取变量的速度是存取属性的速度的20倍左右,尤其是在循环中!
还在就是数据库开发人员在编写存储过程时,效率更应该考虑!比如用游标循环读取表操作,超过一万条记录就很慢了!所有说,我们要强调编写高质量的代码!
Ø 在重复对某一对象的属性进行修改时,尽量使用With....End With
Ø 将经常用到的功能写成模块,提高程序的通用性和可维护性
Ø 尽可能地使用枚举
枚举的格式为
[Public | Private] Enum name
membername [= constantexpression]
membername [= constantexpression]
....
End Enum
优点是:加快开发速度
Ø 调试
在调试的时候加断点
用立即窗口进行调试
或用Debug.Print输出到立即窗口
Ø 程序的错误处理
如果没有良好的错误处理,可能导致程序致辞命错误而退出!我们需要错误处理的过程中加入on error 语句进行错误处理。当然,也可以写一个全局的错误处理模块!
Ø 掌握一门数据库开发语言
目前大多数软件开发都用到了数据库,用到比较多的主要有Access、SQL Server和Oracle等。
Ø 多看MSDN,多上网进行交流。
MSDN是编程人员不可缺少的东东,网站和论坛也是解决问题的好去处。
以下是我个人认为的不错的网站:
http://msdn.microsoft.com
http://www.csdn.net
http://www.vbgood.com
http://www.dapha.net
http://www.21code.com
http://www.vbeden.com
http://www.applevb.com
http://www.codestudy.net
http://www.vbaccelerator.com/
http://www.mvps.org/vbnet/
http://www.freevbcode.com/
http://www.pscode.com/vb/
http://www.allapi.net
第二章 用控件组合成一个软件
VB自身提供了许多控件,可以灵活地组合成一个软件。这里所说的组合,是指在业务逻辑的基础上进行组合,而不是随便地组合。
需要掌握的常用控件:工程--->部件--->
Ø Microsoft Windows Common Controls 6.0
Ø Microsoft Windows Common Controls 2-6.0
Ø Microsoft Common Dialog Controls 6.0
Ø Microsoft Flexgrid Controls 6.0
Ø Microsoft Hierarchical Flexgrid Controls 6.0
Ø Microsoft DataGrid Controls 6.0
Ø Microsoft Internet Controls
Ø Microsoft Winsock Controls 6.0
Ø Microsoft Rich TextBox Controls 6.0
一般的软件,用到上述控件就基本上能完成大部分。
1. 首先,我们要学会菜单、工具栏、常用控件的使用,如果你想做浮动工具栏,可以使用ToolBar和CoolBar(Microsoft Windows Common Controls 3-6.0中有个CoolBar),右键CoolBar——>属性-——>带区——>子——>里加入一个ToolBar,这样工具条就可以移动了!
2. 其次,我们要熟练掌握以上控件的属性、方法的使用。软件的界面就是由一些控件组合而成!用户界面是软件可操作性,可用性的体现,我们来看一个例子:
客户管理是一般企业管理软件的常用功能,包括客户增加、删除、查询、打英维护等,怎么设计这个界面呢?一般来讲,企业的客户一般有分类,分为直接客户、经销客户等等, 有些企业分为国内客户、国外客户等,不同的企业有不同的分法。
则我们可以这样设计:
l 左边一个TreeView,显示客户分类,每种分类用不同的图标表示。(我们可以把客户分类存在数据库中,客户可以维护分类)
l 右边是一个客户列表,用表格显示,一般用MSHFlexGrid或者是ListView的表格形式。
l 当点击左边TreeView的一个节点,右边表格刷新数据,显示当前分类的数据。
l 窗体上方,加一个工具栏,主要有增加、删除、查询、打英退出等按钮。
l 在右边的客户列表,我们还可以做个右键菜单,可以实现编辑(弹出一个新窗口,编辑当前所选择的客户,还可以在新窗口中打印当前客户资料等)、删除等。
这个界面设计就基本成型了!如果你熟悉数据库SQL ,这个功能就很容易实现!
界面类似于这个:http://www.gci-corp.com/images/fy.gif
3. 如果为了完成某项功能,没有能力或时间开发控件的,可适当使用第三方控件。
第三章 怎样成为一个开发高手
Ø 熟练使用API
API说到底就是一系列的底层函数,是系统提供给用户用于进入操作系统核心,进行高级编程的途径。如果您想出类拔萃,那么您就不得不学习 API(Application Program Interface,即Windows的应用程序编程接口)编程。不懂API,那可成不了高手。
1) 利用API,我们可以扩展VB标准控件的功能。很明显的,Windows中的控件提供了比VB中的控件多的多的属性。也许Microsoft认为,一个用VB的程序员,永远不会碰到那些属性。
比如TextBox控件,就少一个属性得到它所包含的文本行数,我们可以利用SendMessage很容易就得到:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Const EM_GETLINECOUNT = &HBA
Public Function LineCount(txtBox As TextBox) As Long
LineCount = SendMessage(txtBox.hwnd, EM_GETLINECOUNT, 0&, 0&)
本文地址:http://www.45fan.com/dnjc/73916.html