为什么VB.net如此冗长?是否有可能削减脂肪?

时间:2008-12-08 21:34:46

标签: vb.net programming-languages

语言成熟后会变得更加冗长吗?感觉每个新版本的VB.net都获得了更多的语法。是否有可能像关键词“昏暗”一样削减一些脂肪?从版本1开始,C#也感觉它的语法越来越多。

16 个答案:

答案 0 :(得分:17)

这就是VB的习语。所有语言都有一个成语,并且有很多用于冗长和拼写的语言。感谢你的幸运星,你不是WRITING IN COBOL

C#是从类C语言演变而来的,在C传统中,简洁性和简洁性受到重视,因此括号&&||int不是integer区分大小写的低级代码。在VB习惯用法中,长不言自明的关键词是好的,简洁的关键词或含糊的符号是坏的,因此MustInheritDim blah as Integer和不区分大小写,但倾向于大写你的关键词。基本上,坚持使用你正在使用的语言的成语。如果你使用(或必须使用)VB,那么习惯于冗长 - 这是故意的。

答案 1 :(得分:17)

C#肯定获得了更多的语法,但是以某种方式使更少详细。

事实上,C#3.0中的每个功能都可以让您用更少的代码完成更多工作。

答案 2 :(得分:9)

冗长并没有什么不妥,事实上它往往是一件非常好的事情。

我假设你有有意义的变量名?描述性的方法名称?那么为什么键入'end if'而不是'}'会出现问题。它真的不是一个问题,如果有的话,C#的简洁性更多的是试图尽可能多地融入尽可能少的角色 - 这意味着它更难阅读,而不是更容易。

答案 3 :(得分:8)

好吧......承认这会让人感到尴尬,但我喜欢在VB.NET中使用Dim。是的,它没有服务于以后使用“As”无法推断的任何特定用途......但对我来说,有一些绝对“击败你的头脑”显而易见的是声明语句从Dim开始。这意味着当有人在查看代码时,他们甚至不必考虑这些语句的含义,即使只是微秒。像C#这样的语言有足够明显的声明,但如果你只是浏览它,你可能需要考虑一下(即使是最短暂的时刻)。

在某些类型的陈述开头有一个特殊的关键词,有一些“特别显而易见”。在VB.NET中,赋值以“Dim”开头,并且调用方法(可以)以“Call”开头,给它们一种“左侧均匀性”,即If,For和其他构造已经有:你得到最基本的要点通过查看它的开头就看到了那条线。使用这些几乎可以给你相当于一个左栏,你可以非常快速地浏览,并获得在某种基本水平上发生的事情的要点(“好的,我们在这里宣布......我们是在这里打电话给其他事情......“)。

这对某些人来说似乎是不合理的甚至是愚蠢的...但它确实使每个陈述的目的明确,以至于感觉更快(至少对我来说)浏览...尤其是在浏览不熟悉的代码时由其他人。

我想,最后,它归结为“不同人的不同笔画”。为了显而易见,我不介意输入额外的三个字符。

答案 4 :(得分:6)

VB.NET很棒,它带来了更清晰的代码。

例如,我喜欢你如何描述你的结局。

结束而vs} 结束vs} 结束if if}

由于智慧的原因,打字时的冗长不是问题。

答案 5 :(得分:6)

详细程度和可读性通常是齐头并进的。最近我开始害怕“优雅”这个词,因为它通常会翻译成“有趣但不易立即阅读”

当然,编写代码的人总是说“对我而言,它更具可读性,因为它更短/更优雅。”

那是废话。阅读更加明确的内容总是比较容易,除非你在阅读时遇到太多麻烦,要花两个小时才能完成迪克和简的小说。

请注意,我不是在谈论裁员,只是明确表达你的欲望。

作为一名程序员,写出优雅的表达方式会更有趣,但我发现自己会在一段时间内看到别人的“优雅”,甚至是我自己的“优雅”,我会把它改成更明确的东西当我意识到虽然编写起来很有趣,但我只花了更多的时间来阅读/调试它,而不是首先编写它。

另一方面,DIM只是愚蠢:))

答案 6 :(得分:5)

我在这里稍微偏离了我的深度。

我喜欢每个人都称之为冗长的东西。没有人想知道我的自然语言中没有多个嵌套括号(例如英语)吗?实际上,嵌套的括号确实需要缩进的约定才能使其变得清晰。在自然语言中,我们使用详细子句和多个句子来避免或至少解释分层括号。

同样在某种意义上,我不会说vb的语法比c#多得多。在某个代码块中,它并没有比c#更多的词法标记(是吗?)。它具有与c#大致相同的语法,它只有更长的语法标记,例如'End Sub'而不是'}'。对于大多数语法管道而言,VB版本只是更多的打字(如果你宣誓掉了知识分子),与'End Sub'相比,'}'也是模棱两可的,因为它也意味着'End If'和其他东西的全部负载。这并没有使它在某种意义上更简洁,代码中仍然存在相同数量的标记,而是来自更简洁的标记标记的较小子集。但是C#中的不同标记具有不同的含义,具体取决于上下文,这需要您在阅读代码时仍然在脑海中具有嵌套级别,以便获得,例如,如果您丢失了您正在阅读的代码块类型即使代码块的末尾可能在视图中,您可能必须查找以查看代码块的开头。即使不是这样的情况也是&&真的比AndAlso好吗?

Dim我认为是无用的,与c#相比是一个额外的词法令牌,但我想至少它与linq一致,vb不需要var命令。我想不出任何其他候选人的印章。也许我没有想象力。

我相信有人会来,并告诉我我有多错误:)我最好猜测这与个人偏好无关。

答案 7 :(得分:4)

然后C#应该摆脱“;”在每个毛毡线的尽头:)

默认应该是轻松的方式去“新线”而不是“;”如果你想在同一行中有例如2个语句,那么你需要使用一个分隔符,如“:”或“;”

答案 8 :(得分:2)

有些人喜欢这样。我怀疑像Dim这样的东西和其他东西一样留下了遗产。

VB确实有一些很好的捷径。例如转换例程。例如CInt,CStr等

答案 9 :(得分:2)

好吧我是一位老C程序员,通过C#来到.Net,现在我在VB.Net工作 我不得不说起初我对这种冗长感到震惊,但又回到了原点 C#对于我来说,我不得不承认我现在更喜欢VB.Net了。

我可以编写VB代码,它读得更好,而且不那么神秘,而且实际上并不需要 更多的空间(特别是如果你把所有的C#花括号放在他们自己的行上) Visual Studio中的编辑器也为我解决了大部分冗长问题。

我喜欢Dim X As List(Of SomeType)读取而不是List<sometype> X

半冒号现在很讨厌。卷曲的牙套很烦人 我确实错过了数组引用的方括号,但有一点。

答案 10 :(得分:1)

自从我看到这个......

lowercase keywords?

......我一直希望它会被包含在语言中。令人惊讶的是,如果没有所有大写的关键词,它的可读性会更高。

答案 11 :(得分:1)

C#不是一种用户友好的语言,需要许多更多行代码才能完成与VB.Net相同的任务。 C#中不支持带/ end with等可选参数。甚至数据库连接在C#中占用更多代码。星球大战的粉丝们喜欢C#,因为你在编程时会像Yoda一样说话。

我的0.02美元:VB.Net的智能感知功能,快捷方式,逻辑可读性等使其成为一种优秀的语言。

答案 12 :(得分:0)

这样做只会让您的代码更难阅读。

答案 13 :(得分:0)

是的我知道你的意思,它可能会有点长时间的啰嗦,我发现由于关键词过多而难以阅读,并且很难看到它背后的逻辑但是有些人喜欢它

我刚刚开始在C#中编写所有内容,我必须说我已经喜欢它了,因为我从现在开始剪切VB并说出正确的C#,所以如果你担心你可以随时只是切换。

答案 14 :(得分:0)

对于我不喜欢VB的一件事就是这个

print("ByVal sender as object, ByVal e as EventArgs");

vs C#

object sender, Eventargs e

答案 15 :(得分:0)

使用预处理器......并且没有任何其他人(或者你自己在某些年份,也许......)阅读的希望。

我会回答经常回答的人抱怨说Lua很冗长:如果你想要一个简洁的语言,你知道在哪里找到它。有很多语言,即使你把自己限制在CLR,所以为什么要抱怨你选择的那个? (我知道,你可能会参与一个你没有开始的项目,等等。)

那不是火焰之类的东西。有很多种语言是有原因的。有些人喜欢他们超简洁,接近数学符号,其他人喜欢他们(或多或少)冗长,发现更具可读性。有各种口味的语言!