繁体   English   中英

Visual Basic 中的数组

[英]Arrays in Visual Basic

在 VB 中声明一个数组时,您是否会将零元素留空并调整代码以使其对用户更友好?

这适用于 Visual Basic 2008

不,我不会那样做。 看起来它可能有助于可维护性,但这是一个非常短视的观点。

这样想吧。 每个必须理解和维护代码的程序员只需要很短的时间就可以适应零索引数组。 但是,如果您使用基于 1 的数组,这与几乎所有其他 VB.NET 代码以及几乎所有其他常见编程语言中的数组不同,那么团队中的每个人都会花费更长的时间。 他们会不断地犯错,因为他们的自然假设在这种特殊情况下不准确而犯错。

我知道那是什么感觉。 当我在 VB 6 中工作时,我喜欢基于 1 的数组。 对于我存储的数据类型来说,它们非常自然,而且我到处都在使用它们。 此处可完美记录,因为您有明确的语法来指定数组的上限和下限 在 VB.NET(它是一种较新但不兼容的 Visual Basic 语言版本)中并非如此,所有数组都必须从零开始索引。 在最初的几天里,我很难切换到 VB.NET 的从零开始的数组。 在最初的调整期之后,老实说,我从未回头。

有些人可能会争辩说,将每个数组的第一个元素留空会不必要地消耗额外的内存。 虽然这显然是正确的,但我认为这是我上面介绍的原因背后的次要原因。 优秀的开发人员编写代码供他人阅读,因此我赞扬您考虑如何使您的代码合乎逻辑且易于理解。 问这个问题,你走在正确的道路上。 但从长远来看,我认为这个决定不是一个好的决定。

非常特殊的情况下可能会有一些例外情况,具体取决于您存储在数组中的数据类型。 但同样,未能全面做到这一点似乎会损害总体的可读性,而不是帮助它。 一旦您了解了数组的索引方式,简单地编写以下内容并不是特别违反直觉:

For i As Integer = 0 To (myArray.Length - 1)
    'Do work
Next

请记住,在 VB.NET 中,您还可以使用For Each语句来遍历数组元素,许多人认为这更易读。 例如:

 For Each i As Integer In myArray
     'Do work
 Next

首先,它是关于程序员友好的,而不是用户友好的。 用户永远不会知道代码是基于 0 还是基于 1。

其次,从 0 开始是默认的,并且会越来越多地使用。

第三,基于 0 对计算机来说更自然。 从元素上看,它有两种状态,0 和 1,而不是 1 和 2。

我已经将几个 VB6 项目升级到 vb.net。 一开始修改为从 0 开始的数组,总比以后调试代码要好。

  • 我的大多数 VB.Net 数组都是从 0 开始的,并且使用了每个元素。 这在 VB.Net 中很常见,代码一定不会让读者感到惊讶 可读性至关重要。
  • 有什么例外吗? 也许如果我有一个从 VB6 移植的程序,所以它使用基于 0 的数组和未使用的初始元素,并且需要进行一些的更改,我可能会匹配现有代码的模式。 再一次少吃惊
  • 100 次中有 99 次不应该出现这个问题,因为您应该使用List(Of T)而不是数组!

谁是要查看数组索引的“用户”? 任何优秀的开发人员都将能够处理零索引数组,而真正的用户不应该看到它们。 如果用户必须与数组交互,则为此创建一个实际用户友好的系统(文本或基于 1 的虚拟索引或任何需要的)。

在 Visual Basic 中,如果您发现使用基于 0 的数组不方便,可以声明从 1 开始的数组。

Dim array(1 to 10) as Integer

这只是口味问题。 我在 Visual Basic 中使用基于 1 的数组,但在 C 中使用基于 0 的数组;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM