Why should a variable not be declared as a module variable?
Answers
Answered by
12
As my first language and as completely taught from other's example I never questioned the standard practice in VBA of grouping all variable declarations at the start of the module, routine or function they are scoped to as in this example.
Sub Traditional() Dim bVariable as Boolean Dim OtherVariable ' Some code using OtherVariable goes here ' ' Now we use bVariable bVariable = True Do While bVariable bVariable = SomeFunction() Loop End Sub
Now I'm learning that standard practice in other languages is to declare variables as close to where they are used as possible, like this:
Sub Defensive() Dim OtherVariable as String ' Some code using OtherVariable goes here ' ' Now we use bVariable Dim bVariable as Boolean bVariable = True Do While bVariable bVariable = SomeFunction() Loop End Sub
This seems completely sensible to me as a defensive programming practice - in that it limits both span and live time (as explained in Code Complete), so I'm wondering if there is any reason for not doing the same in VBA? Possible reasons I can think of are memory, running time (e.g. repeatedly declaring inside a loop), tradition - arguably a good reason as there must be hundreds of thousands of VBA programmers who expect to see all used variables at the start of the routine. Are there any I've missed that might explain the benefit of this practice or at least where it came from?
Sub Traditional() Dim bVariable as Boolean Dim OtherVariable ' Some code using OtherVariable goes here ' ' Now we use bVariable bVariable = True Do While bVariable bVariable = SomeFunction() Loop End Sub
Now I'm learning that standard practice in other languages is to declare variables as close to where they are used as possible, like this:
Sub Defensive() Dim OtherVariable as String ' Some code using OtherVariable goes here ' ' Now we use bVariable Dim bVariable as Boolean bVariable = True Do While bVariable bVariable = SomeFunction() Loop End Sub
This seems completely sensible to me as a defensive programming practice - in that it limits both span and live time (as explained in Code Complete), so I'm wondering if there is any reason for not doing the same in VBA? Possible reasons I can think of are memory, running time (e.g. repeatedly declaring inside a loop), tradition - arguably a good reason as there must be hundreds of thousands of VBA programmers who expect to see all used variables at the start of the routine. Are there any I've missed that might explain the benefit of this practice or at least where it came from?
Answered by
4
Answer:
Why should a variable not be declared as a module variable?
Similar questions