VB和VBA的优点和缺点?

Pow*_*ser 20 vb.net vba

在另一个与编程相关的网站上,我在某人的签名中看到了这一行.这不是我第一次见到这种情绪,虽然这是最严厉的:

"在VB或其任何变种中工作的人不是程序员,他们是马戏团的黑猩猩把粪便投入IDE ......"

VBA是我的面包和黄油,我可以用它自动化很多东西.是的,我知道它缺乏润色和一些功能,但为什么这么多的消极性呢?另一方面,VB不具备其他语言的含义?

Jul*_*iet 34

VB6,VBScript和VBA具有声誉,因为它们不是工业级语言.值得注意的是:

  • 没有OOP.当然,你有类和模块,但没有继承.VB不是一种低级语言,它需要真正的对象.
  • 没有一流的功能,所以你甚至无法模拟OOP或多态.
  • 缺乏一个完善的类库.VB6有一个很小的内置函数库,几乎所有其他功能都委托给Windows调用或(通常是昂贵的)第三方组件.
  • 糟糕的错误处理.ON ERROR RESUME NEXT是这个星球上的一个痘.
  • 虽然它不是语言的错,但VBA通过与MSAccess的关联赢得了不好的声誉.

当然,VB并不是真正意图成为一种工业强度语言,所以上面提到的任何内容都不是对该语言的正确批评.幸运的是,VB.NET和最新版本的VBA修复了上述所有内容,因此VB.NET与市场上任何其他"严肃"语言都不相上下.


[轶事]

为了捍卫VB,我发现大多数人批评这种语言只是为了满足现状,而不是因为他们实际上使用过它.

几年前,在一个聊天室,我遇到了一个年轻的新手栏杆,对抗VB6开发人员使用这种蹩脚的语言.我无辜地问"VB有什么问题".

他说的第一件事是"因为它是一种WINDOWS语言!" 所以我指出Borland Delphi是一种Windows唯一的语言*,但我从来没有听过有人因为这个原因而恶意攻击它.(*有一个名为Kylix的产品,它交叉编译到Linux,但它的价格昂贵,有缺陷,并已停产.自从我使用Delphi以来已经有一段时间了,但最后我听说,它还没有为Linux做好准备.)

所以,他说"它有一个可怕的语法!" 这真的是人们讨厌这种语言的原因吗?我会说Perl,Lisp和C++的眼睛比VB差.

接下来,他说"它太容易学了!" 好吧,我认为这一点有利于语言.如果我有一个拖放设计师,我永远不会手工编写GUI.你还有什么?

所以最后,抓住稻草,他评论说"它......没有字符串操作功能".左,右,中,替换,InStr和修剪.QED菜鸟.

有趣的是,VB的功能发现了一些"黑客"语言,即变体数据类型和鸭子类型.编译代码表现相当不错,COM和本机Windows DLL之间的互操作很简单,GUI编辑器基本上为所有未来的RAD开发设置了标准.

[/轶事]

  • 除非另有说明,否则VB的所有实例均指VB6. (2认同)
  • 关于VB的意图 (2认同)
  • 每次我需要在Excel中使用VBA编写任何远程有用的代码时,我都希望将计算机放在墙上.即使只是以任何有用的方式使用阵列也会使我的血压升高.如果像我这样的高级程序员在使用数组时会遇到困难,那么新手到底会怎样?我个人认为,Visual Basic for Applications(在Excel中)很可能是我们物种创建的最糟糕的编程语言和环境......我需要一杯啤酒. (2认同)

And*_*ton 25

阅读一些Joel Spolsky的文章,你会对自己感觉更好.从他关于CityDesk的文章,第三部分:

Visual Basic是一种非常有效的编写代码的方法,尤其是GUI代码.想要对话框上的粗体文字?在VB中单击一下.现在尝试在MFC中执行此操作.你必须创建一个子类控件,这是一个很大的混乱,你必须了解所有关于LOGFONTS和Windows窗口的子类化以及其他一些事情,一旦你拥有魔术类,你需要大约三行代码.

但是许多VB程序都是意大利面条,或者是因为它们是快速而肮脏的一次性完成,或者是因为它们是由黑客程序员编写的,没有面向对象编程甚至结构化编程的培训.

我想知道的是,如果你选择那些在指针中做梦的顶尖C++程序员,并让他们用VB编写代码会发生什么.我在Fog Creek发现的是它们成为超高效的编码机.代码看起来很不错,它面向对象且功能强大,但您不会浪费时间使用低于您需要的工具.我花了数年时间为C++/MFC编写代码,多年用Visual Basic编写代码,让我告诉你,VB的效率要高得多.

这种简单性吸引了许多新程序员.说有很多使用Visual Basic的坏程序员并不意味着Visual Basic是一种糟糕的语言; 它只是意味着坏程序员(AKA新程序员)可以访问Visual Basic.

  • 有一句古老的引用(有时)适用于VB ......"如果你让它变得简单,任何白痴都可以使用它,只有白痴会使用它".VB不是一门优秀的语言,但真正的缺陷是它太容易学习,而且太多的白痴称自己为"专业"VB开发人员. (3认同)

Rya*_*ndy 21

我在一个所有代码都是C#的地方工作,而不是VB .NET.一位开发人员编写了大部分代码.你知道他是如何实现这一壮举的吗?容易:他复制并粘贴到各处.给定的方法可能在整个系统中具有几个到几百个副本.

优秀的开发人员可以使用任何语言.蹩脚的开发人员可以用任何语言蹩脚.

  • 我在林肯的一家商店工作,公司里最好的程序员专门使用VB.NET - 他甚至设法在他的代码中使用一些高级函数式编程概念.最糟糕的应用程序是由一些非常缺乏经验(或可能是恶意的)离岸开发人员编写的C#应用​​程序. (5认同)

Jim*_*m W 8

还要注意VB,VBA和VB.NET都是三种不同的语言,即使它们可能共享一些类似的语法.有VB.NET和C#(除了关键字/语法)之间没有真正的区别,所以我们不应该一概而论VB(6)之前和VBA与VB.NET.

许多程序员使用"VB"(只说所有3种语言)的真正问题更多的是使用它的人.大多数时候,"VB"程序员的正规教育较少,编写的代码较为粗糙.对于所有"VB"程序员来说,情况并非如此(这并不意味着没有用C++,Java,C#等编写的草率代码).这只是一个典型的期望,那些不使用VB的人在听到VB程序的时候会有这种期望.

  • VB .NET与VB和VBA完全不同.但VB和VBA之间的差异非常小. (3认同)
  • VBA不是"脚本语言".*VBScript*是一种脚本语言.VBA本质上是与VB6相同的语言,但它与Excel,Word,Access等相关联,而不是像VB6那样独立.确实,VBA和VB6不是真正的OO语言,但它们确实具有一些OO功能(例如接口). (3认同)

Bri*_*Kay 5

嗯,这些只是宗教偏执狂.

没有一种真正的语言,大多数有经验的人不仅知道这一点,而且立即将这些陈述视为缺乏经验的明显标志.