解密VB封装
我们应该非常熟悉这句话了“合法不合理,合理不合法”。呵呵,其实在VB编程过程中,这种冲突也随处可见。记得我在刚学编程时见过某老外VB高手写下如下的一段话“能够少用函数或者过程的就不要用,这样会拖慢系统运行的速度”,因此那时的我经常在一个事件下写几十行甚至上百行代码,一个简单的管理系统竟然有两万多行代码。我做的很多工作就是不停地“CTRL+C”、“CTRL+V”,现在想想真是惭愧。
那么到底应该如何做才是正确的做法呢?我在编程学习过程中,没有人告诉我,就是去书城你也找不到答案。我真是感到纳闷,VB方面的书每年要出几百本吧?但大都千篇一律,好象是同一本书的若干个副本。也有很多网友告诉我,他们看了几十本书,书中的例题也都做了,但放下书后还是一个程序也写不了,或者勉强写出也只能自己玩玩,想要变成商业性的软件那可是万万不能的。
是的,没有人会告诉你这些真正的精华,那可是money亚!!·#%¥·!%·!%#·!我可以把MSDN改改写一本厚厚的书,但我是绝对不会告诉你真正的商品化软件是怎样做的,凭什么呀!大家如何都知道了,我吃什么呀?猫可以教老虎各种各样的本领,但至少还保留有一手——上树。
我不是雷锋,但我愿意把自己五年来的编程经验毫无保留地分享给大家。借这个专题,我要告诉你:一个商品化软件是如何对各个环节进行封装的,三层架构是如何实现的等等。自信绝对精华,您如果感觉还行,请把俺的贴子扩散出去,能够让更多的VB友有所帮助。
OK,费话讲了这么多,让我们先从封装控件操作开始吧。请看以下代码:
****************************************************************************
'设置本窗体所有文本框的 Text为空
'参数 objForm 为当前窗体对象
Public Function txtAllBlank(ByVal objForm As Form) As Boolean
On Error GoTo 0
Dim objObject As Object
txtAllBlank = False
'遍历窗体上的对象,将找到的文本框的 Text 赋值为空
For Each objObject In objForm
If TypeOf objObject Is TextBox Then
objObject.Text = ""
End If
Next
txtAllBlank = True
End Function
********************************************************************
看明白吗?这是在标准模块中自定义了一个名为txtAllBlank的函数,作用是将某窗体内的所有text均清空.
也许有朋友会抽我了,“objObject 是低效的作法,应该尽量避免”、“我直接写txt1=""、txt2=""、txt3=""不是更省事也更高效?代码也要比你简洁”。
不错,上面这些朋友所说的我都认可,但问题是正确地去做事不等于可以做正确的事啊。例如:HRM软件里的员工档案里面可能有十几个txt吧,当新增动作发生后,界面需要重置,这时txt都必须清空,这时如果按txt1=""的写法的话,要写多少行代码?更要命的是,如果这种性质的窗体不止一个的话,那你可就真的要“CTRL+C”、“CTRL+V”了!
类似的动作我们还可以联想到很多,比如LOCK、ENABLED、CHECKBLANK等等。商品化软件的核心思想就是减少软件后期维护的工作量和软件功能扩充(修改)时的工作量。如果我需要对控件增加某功能,只需在标准模块或者类模块中改改就可以了。经常见到一些程序员在讨论技术问题时张口“效率”、闭口“效率”,在计算机硬件水平飞速发展的今天,过多强调“效率”是迂腐的行为。我曾经拿过一段老外写的代码给一个网友(某软件公司程序员)看,他张口就来了句“垃圾”。我感到好笑“那么请你写一段不是垃圾的代码给我看”?呵呵。
在下一篇文中我将谈谈利用类模块对常用控件操作动作的封装。
__________________________________________________________________________