2

语言会随着成熟而变得更加冗长吗?感觉就像每个新版本的 VB.net 都获得了更多的语法。是否可以像关键字“Dim”那样减少一些脂肪?C# 也感觉自版本 1 以来它的语法越来越多。

4

16 回答 16

17

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

C# 是从类 C 语言演变而来的,在 C 传统中,简洁和简洁受到重视,因此大括号,而&&不是区分大小写的小写代码。在 VB 习语中,长的不言自明的关键字是好的,简洁的关键字或神秘的符号是不好的,因此,不区分大小写,但倾向于将您的关键字大写。基本上,坚持使用您使用的语言的习语。如果您使用(或必须使用)VB,请习惯冗长 - 这是故意的。||intintegerMustInheritDim blah as Integer

于 2008-12-08T21:44:26.063 回答
17

C# 确实获得了更多的语法,但在某种程度上使其不那么冗长。

几乎 C# 3.0 中的每个功能都允许您用更少的代码做更多的事情。

于 2008-12-08T21:44:44.330 回答
9

冗长并没有错,事实上它通常是一件非常好的事情。

我假设你有有意义的变量名?描述性方法名称?那么为什么输入'end if'而不是'}'会出现问题。它实际上根本不是问题,如果有的话,C# 的简洁性更像是一个问题,它试图尽可能地适应尽可能少的字符——这意味着它更难阅读,而不是更容易。

于 2008-12-08T22:09:57.867 回答
8

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

在某些类型的语句的开头有一个特殊的关键字是“非常明显的”。在 VB.NET 中,赋值以“Dim”开头,对方法的调用(可以)以“Call”开头,赋予它们一种 If、For 和其他构造已经具备的“左侧一致性”:你得到了最简单的要点仅通过查看它的开头即可了解该行发生了什么。使用这些几乎可以为您提供相当于左侧列的功能,您可以非常快速地向下浏览并了解某种基本级别上正在发生的事情的要点(“好吧,我们在这里宣布事情......我们是在这里打电话给其他东西......”)。

对某些人来说,这可能看起来不合理甚至愚蠢……但它确实使每个语句的目的足够明确,以至于浏览起来感觉更快(至少对我而言)……尤其是在浏览其他人编写的不熟悉的代码时。

我想,最终归结为“不同的人不同的笔触”。我不介意为了明显的目的而输入额外的三个字符。

于 2008-12-08T22:43:18.953 回答
6

VB.NET 本身就很棒,它使代码更加清晰。

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

End while vs } End for vs } End if vs }

实际上,由于智能,打字时冗长不是问题。

于 2008-12-08T21:47:23.903 回答
6

冗长和可读性通常是齐头并进的。最近我开始害怕“优雅”这个词,因为它通常翻译成“有趣但不太容易读懂”

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

那是废话。阅读更明确的东西总是更容易,除非你阅读困难,以至于你需要两个小时才能读完一本迪克和简的小说。

请注意,我不是在谈论裁员,只是明确说明您的愿望。

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

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

于 2008-12-08T22:25:04.887 回答
5

我在这里稍微超出了我的深度。

我喜欢大家所说的冗长。没有人想知道我们在任何自然语言(例如英语)中都没有多个嵌套括号吗?事实上,嵌套括号确实需要缩进的约定才能使其清晰易读。在自然语言中,我们使用冗长的从句和多个句子来避免或至少解释分层括号。

同样在某种意义上,我不会说 vb 的语法比 c# 多得多。在某个代码块中,它实际上并没有比 c# 更多的词法标记(是吗?)。它的语法与 c# 大致相同,只是语法标记更长,例如“End Sub”而不是“}”。对于大多数句法管道,VB 版本只会更多地打字(如果您宣誓放弃智能感知),而且与“End Sub”相比,“}”是模棱两可的,因为它也意味着“End If”和其他东西的全部负载. 这并没有使它在某种意义上更简洁,代码中仍然存在相同数量的标记,但是来自更简短标记标记的较小子集。但是 C# 中不同的标记根据上下文有不同的含义,这要求您在阅读代码时仍然在脑海中记住那个嵌套级别,以便获得,例如,如果您失去位置,您正在阅读什么样的代码块,即使代码块的结尾可能在查看您可能需要查看代码块的开头。即使不是这种情况,&&真的比AndAlso更好吗?

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

我敢肯定有人会过来告诉我我错了:) 我最好的猜测是无论如何都与个人喜好有关。

于 2008-12-09T01:11:24.380 回答
4

那么C#应该去掉“;” 在每一条线的尽头:)

默认应该是简单的方法去这样的“新行”而不是“;” 如果您希望在同一行中出现诸如 2 个语句的异常,则需要使用分隔符,例如“:”或“;”

于 2008-12-08T22:04:17.253 回答
2

有些人喜欢这样。我怀疑像 Dim 这样的东西是出于遗留原因而留下的。

VB 确实有一些不错的捷径。例如转换例程。例如 CInt、CStr 等

于 2008-12-08T21:39:00.707 回答
2

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

我可以编写可读性更好且不那么神秘的 VB 代码,并且它确实不会占用更多空间(尤其是如果您将所有 C# 花括号放在自己的行上)而且 Visual Studio 中的编辑器会处理大部分对我来说冗长。

我喜欢Dim X As List(Of SomeType)阅读方式,而不是List<sometype> X

分号现在很麻烦。花括号很烦人。
我确实有点想念数组引用的方括号。

于 2010-04-02T20:57:42.443 回答
1

自从我看到这个...

小写关键字?

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

于 2008-12-08T22:00:37.480 回答
1

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

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

于 2010-02-28T08:28:31.883 回答
0

是的,我知道你的意思,它可能有点啰嗦,我发现它变得难以阅读,因为有太多的关键字并且很难看到它背后的逻辑,但是有些人喜欢它。

我最近才开始用 C# 编写我所有的东西,我必须说我越来越喜欢它,因为我刚刚切掉了 VB 并从现在开始说正确的 C#,所以如果你担心你可以随时切换。

于 2008-12-08T21:47:50.953 回答
0

我不喜欢 VB 的一件事是

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

与 C#

object sender, Eventargs e
于 2008-12-08T22:20:32.777 回答
0

使用预处理器......并失去任何被其他人(或您自己在几年内,也许......)阅读的希望。

我会回答那些抱怨 Lua 冗长的人经常会回答的问题:如果你想要一种简洁的语言,你知道在哪里可以找到它。周围有很多语言,即使您将自己限制在 CLR 中,为什么要抱怨您选择的语言呢?(我知道,你可能会从事一个你没有开始的项目,等等)。

那不是火焰什么的。有许多语言是有原因的。有些人喜欢它们超级简洁、接近数学符号,而另一些人则喜欢它们(或多或少)冗长,发现它们更具可读性。有各种口味的语言!

于 2008-12-08T23:12:14.263 回答
-1

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

于 2008-12-08T21:37:50.053 回答