在子例程之外声明常量

时间:2013-11-18 15:13:53

标签: vb.net visual-studio-2010 declaration

这更多的是变化,但我想在开始更改一些旧代码以清理它之前确定。

如果在模块内部但在子例程之外声明了私有变量,则实际创建这些变量的时间。例如,这是模块的设置方式:

'Local objects.....
'Function Main.....
'Subroutines.......
Private Constants..
Private variables..
More Subroutines...

如果这些变量仅在一个子程序中使用,它们是应该在子程序内部还是在本地对象中声明,或者在子程序之外,就像现在一样?

谢谢!

1 个答案:

答案 0 :(得分:3)

CLR不支持模块或模块变量,因此模块变为静态类,模块变量变为静态字段。

通常,变量应声明为尽可能接近它们使用的点。它们的范围也应尽可能地受到限制。

将变量转换为字段是一种非常糟糕的编码实践,原因如下:

  • 很容易犯错并在模块的另一部分重复使用相同的字段,从而产生意外情况。
  • 您可以显着增加变量中对象的生命周期。通常,退出方法后,该变量可用于垃圾回收。通过将其转换为静态字段,对象将保持活动状态,直到它被替换或应用程序终止
  • 多个线程将能够查看和访问相同的静态字段,从而可能创建竞争条件。鉴于现在有多少事情是不正常的,这可能是一个重大问题