VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - Visual Basic .NET Beta 1试用报告
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:8658, 日期:2001-02-10
本文描述使用Visual Basic .NET 测试版的感触,说明了他突飞猛进的发展,通过从工作环境和编码来阐述了VB7的变化。

前 言

  早半年前就在网上看见一大堆的关于VB7的介绍,说的天花乱坠,我向来对新技术是非常欢迎的,所以收集了很多这方面的资料,可收集的越多,心就越痒痒,天天盼着VB7从天而将。

  直到大概去年10月份底,微软的站点提供了Visual Studio .NET的测试版下载,可他要的ID和Password,眼巴巴的看着DownLoad几个字母,我痛啊!

  终于在今年1月初,我搞到一套(怎么得来的我是不必说了),经过好一番折腾,终于他、他……出来了(我太激动了)。 图一




环境印象

  一、界面

  也许大家首先看见上图的第一印象就是现在微软又回到平面时代,也许是看了太多的3D图,我个人是非常喜欢这种样式的,微软的Office 10也是采用同一样式的工具栏。

  另一个我很喜欢的地方是现在的工作空间利用率更高了,原先典型的工作环境-工程栏、属性栏、工具栏和立即窗口,几个小窗口把代码窗口挤的简直没办法工作了。现在所有的工具栏都可以自动隐藏了(图二-2),真的非常方便。而且微软在工作窗口的上部添加了切换页签(图二-1),更加提供了效率,从这一点上我不的不很佩服微软。

  界面上的另一个变动是部分窗口采用了Web方式,个人认为Web Form是个双刃刀,他可以采用脚本后期再修改,但他相对Windows Form缺乏足够的界面灵活性,而且性能不佳,更糟糕的是连微软自己都无法在Web Form上实现一些功能,所以造成界面有时不同意。




图二

  二、编码

  在VB .NET环境下编写代码我发现能偷懒的微软都可以让你偷懒了。在图三-3处大家可以看见VB帮你自动填写了END IF和NEXT;你在定义函数时,他会自动出现ByVal、ByRef等选择;更加难以想象的是你在打入On Error Goto时,他出现了0和-1的选择,如果你在这个子程序中已经定义了行标,他也会自动加入到选择中,我重新输入On Error Resume后,他自动出现Next,我倒!




图三

  在VB .NET中语法检查更加迅速直接,而且设计的更加体贴。以前你输入IF后突然想起想起前面的变量没有定义,于是我就想立即将光标定位到开始输入变量的定义,可是VB6出来讨厌的语法错误对话框,真是非常麻烦,现在VB7聪明多了,他会在错误的地方打入下波浪线,如果你想知道错误的原因,可以将光标移动到错误处,VB7自动给出提示。

  现在的语法检查可以识别变量是否定义(图三-2),而且可以立即的识别关键字了。

  可折叠代码也是可以称道的地方(图三-1),这样编写出的代码观看会更清晰。初学编程的人总是把代码写的乱七八糟,在VB7种你再也看不到这种情况了,试试看光标从第二行移走时他会发生什么。

  For I = 1 To 100 '1

   I = 1 '2

  Next '3

Office 2000中的多次剪切板,你一定十分喜欢,现在当你Copy一段代码到剪切板时在Toolbox面板的Clipboard Ring卡片中你能找到剪切板中的内容。

  三、辅助工具

  现在VB、VC、C#共享了Visual Studio的统一工作环境了,你不再会为VC的工具而羡慕无比,一般来说,你在VC下看到的,在VB中一样能用。



  语 言

  一、完全的面向对象

  面向对象的好处我是不必说了,在VB7没有出现之前VB一直被别人讥笑为基于对象而不是面向对象的语言,虽然微软安慰我们说:使用接口会比使用继承更好等一大堆的塘塞之语,显然这种说法是自欺欺人的,现在VB7出现了,我们可以理直气壮的说:我们使用完全面向对象的语言。

  封装性:也许你会说好像VB4都实现了封装性,但连VB6的封装性还不完善,例如没有继承的友元(VB6更本没有继承,所以也谈不上继承的友元)。

  继承性:这可能是我盼望VB7的更本原因,我不知道因为VB没有继承性而痛苦无比,看着一大堆Copy过来有Copy过去的代码我头都大了,不要说没有效率,维护这些代码才是最要命的。现在你看看VB7是怎么写的吧:

  Public Class Form1

  Inherits System.WinForms.Form

就这么简单,用同样的方法,你可以自己继承出一个自己的TextBox对象-蓝色底纹、自动选择、回车响应一大堆多功能加进去,而你写的代码比原先写控件的代码不管是总量还是质量还是功能简直是--天壤之别。

  重载:在VB7中重载也是非常方便的事,例如下面的代码:

  Overloads Sub Display(ByVal theChar As Char)

   '……

  End Sub

  Overloads Sub Display(ByVal theInteger As Integer)

   '……

  End Sub

  多态:在VB6中通过接口,我们已经能够很好的实现多态了,在VB7中接口的支持更加好,比如VB6中接口必定是公有的,但VB7中你可以定义为私有的,而不让别人看见(见下面代码)。

  二、直接支持多线程

  在VB7中你不必用API费力的实现多线程了,VB7提供了极其简单的方法:

   Dim MyThread As New System.Threading.thread(AddressOf UseAnimal)

  有了这样方便的方法你一定能够通过VB7实现和VC一样速度的程序来。

  三、更加灵活的方法

  这一点我觉得早就应该有的功能,因为我实在想不起来在主流的程序语言中,还有哪一个不能实现这些功能的。

  我们现在要实现VC中一直非常值得骄傲的语法之一:i++,在VB7中你可以这样:

  i += 1

也许你会发现VB7这样写一是比VC要好理解一点,二是他会更灵活,而且VB7中有更多的这样相似的语法。例如:

  i += 100

  i \= 100

  i *= k

在VC中你可以在声明变量时初始化变量,VB7也可以这样,而且对象声明时也可初始化:

  Dim Distance As Double = 0

  Dim mDog As Dog = New Dog("Init String")

  四、一切都是对象

  现在你仍然能够使用诸如Integer、Long、String之类的“变量”,但他们现在实际上是一个对象了。正因为如此,我们原先在VB6这样的一句话:

  Msgbox Err.Description +Cstr(Err.Number)

在VB7中你仍然可以这样书写,但你现在有另一种办法了:

  Msgbox(Err.Description + Err.Number.ToString)

那为什么要这样做呢?这样做的好处是你不再需要背诵一大堆的函数了,而且时间一长你就会觉得这样非常的棒。

  五、结构化的出错

  在VB发展到VB6时,不要说对象编程不彻底,甚至你有时不得不使用比结构化编程还要原始的GOTO语句,你在VB6中到处都能看见这样的语句:

  On Error Goto Err_Load

VB7中人员允许你这样使用,但微软提供了更好的办法:

  Sub TryExample()

   Dim x As Integer ' Declare variables.

   Dim y As Integer

   Try ' Setup structured error handling.

    x \= y ' Cause a "Divide by Zero" error.

    Catch E As Exception ' Catch the error.

    Debug.WriteLine(E.ToString)

    Finally

    Beep() ' Beep after error processing.

   End Try

  End Sub

是不是有点像Java。

  六、其他

  我认为VB7对于因特网的超强支持不能算是语言的增强,就像面包车喷了新漆时不能说他就变成轿车一样,我们只能说他功能更强大或更活看一点。但微软把VB7改叫.NET,我怎能不说他的网络功能呢。

  目前VB7中提供强大的对XML、HTML、JScript、VBScript、Web Form和Web Service等的编写环境,虽然我同意因特网是未来的发展方向,但我似乎太显示,对这些功能不大敏感,所以也没有过多的使用。


后 记

  老实说VB7强大的功能没有让我失望,看见VB7现在的发展我突然想对中国的软件也提提意见。

  可以看出VB7中微软在易用性和智能化方面花了大量的工作,我想这也是微软的产品之所以受欢迎的原因,因为比微软功能强大的软件太多了,但他们大多使用不方便。

  易用性包括醒目的提示、统一的界面、良好的界面布局和高度灵活的的界面定制能力,其实对程序员来说这些问题是不存在的技术性的问题的,那为什么中国的很多软件不能做到呢,说得好听一点是工作态度不严谨,说的难听就是太懒。――你能做到的为什么不做呢!

  其次微软的成功我觉得还有另一部分的原因:它能提供整体的解决方案,看看微软的产品都是家族式的产品,因为没有人愿意一项工作使用10家公司的10种产品,他们更愿意用一家公司的10中产品,哪怕这会牺牲部分软件的功能。

  有些人会说我现在没有微软那样财大气粗,你叫我怎么开发全套的软件呢,这又涉及微软成功的第三点:良好的扩展性。微软不仅公开它的COM对象库,还鼓励你去做二次开发,它提供了尽可能完整的文档。我觉得这笔公开源代码要更实际,不要以为这样会泄漏你的商业机密,但我想这比得到的好处要少得多,很简单的问题你看WORD早在95版就公开了它的对象结构,但目前有人能做出微软一样的WORD吗?

  公开你的对象库是更好的联合,可能你开发了一个工资管理系统,但你还需要一个财务管理系统,自己开发吗?不!和有财务系统的公司签订合同创建集成的系统,双方收益,小小得大。