VB.Net中的变量应该在例程开始时声明吗?

VB.Net中的变量应该在例程开始时声明吗?,vb.net,Vb.net,我想我对这里的最佳实践有点困惑。在VBA中,建议始终将所有变量放在例程(属性、子或函数)的顶部。我似乎在任何地方都找不到任何明确的答案来说明这在更现代的OO语言中是否是一种好的实践。我正在学习VB.Net,想在第一时间养成良好的习惯。这两种方法都有好处吗?最初这是必要的:早在很久以前,C和Pascal编译器/解释器要求在任何实际指令之前声明所有函数局部变量,这包括循环变量(例如for(int i=0;…)中的i).在过去30年中编写的编译器不再需要这个了,但是这个习惯在许多人的头脑中根深蒂固。我

我想我对这里的最佳实践有点困惑。在VBA中,建议始终将所有变量放在例程(属性、子或函数)的顶部。我似乎在任何地方都找不到任何明确的答案来说明这在更现代的OO语言中是否是一种好的实践。我正在学习VB.Net,想在第一时间养成良好的习惯。这两种方法都有好处吗?

最初这是必要的:早在很久以前,C和Pascal编译器/解释器要求在任何实际指令之前声明所有函数局部变量,这包括循环变量(例如
for(int i=0;…
)中的
i
).在过去30年中编写的编译器不再需要这个了,但是这个习惯在许多人的头脑中根深蒂固。我确实看到了一些有益的教训,但是如果你有很多变量只存在于分支或循环中,那么它就变得很傻了。除了@Dai的观点,我认为声明变量没有是很有用的他指出了最小可能的作用域。这意味着(例如)只在循环中使用的变量应该在循环中声明。这实际上很有意义。我必须重新训练我的大脑:-)块作用域的概念也改变了顶级声明的用途。刮伤变量可以重复使用,而不是增殖。我仍然把“重要的”放在最上面,其余的…没有那么多。VS能够通过鼠标悬停告诉您任何var是什么,这也使得能够找到一个var来查看它被声明为什么变得不那么重要。我认为公平地说,过去几十年来,最佳实践已经发生了变化。现在我尽可能晚地声明,尽管我仍然倾向于将模块级变量全部放在顶部。最初这是必要的:早在很久以前,C和Pascal编译器/解释器要求在任何实际指令之前声明所有函数局部变量,这包括循环变量(例如(int i=0;…).在过去30年中编写的编译器不再需要这个了,但是这个习惯在许多人的头脑中根深蒂固。我确实看到了一些有益的教训,但是如果你有很多变量只存在于分支或循环中,那么它就变得很傻了。除了@Dai的观点,我认为声明变量没有是很有用的他提出了最小可能的作用域。这意味着(例如)只在循环中使用的变量应该在循环中声明。这实际上很有意义。我必须重新训练我的大脑:-)块作用域的概念也改变了顶级声明的用途。Scratch变量可以重用,而不是增殖。我仍然认为“重要的"在顶部,其余的…没有那么多。VS能够通过鼠标悬停告诉您任何var是什么,这也使得能够找到一个var来查看它被声明为什么变得不那么重要。我认为公平地说,最佳实践在过去几十年中已经发生了变化。我现在尽可能晚地声明,尽管我仍然倾向于将其放在模块级变量都在顶部。