2014-02-11 5 views
1

У меня есть приложение Access с несколькими десятками модулей. Я объявлял переменную заново в каждом новом модуле, минус переменную, требующую глобальной области. Я использую Option Explicit везде.MSAccess: Global vs Local Variable Declaration

Вопрос: Было бы плохой практикой объявлять мои общие локальные переменные как глобальные, хотя область действия является только локальной ?. Просто вопрос удобства, я полагаю:

Примеры переменных я объявляю в каждом модуле:

Dim strMsg as String 
Dim strSQL as String 
Dim N, N1, N2 as Integer 
Dim db As Database 

Set db = CurrentDb 

Любое руководство или предложения?

ответ

5

Я думаю, вы все равно хотите сохранить эти переменные локальными. Что делать, если вы находитесь в Module1 и задаете strMsg, то вы вызываете функцию в Module2 от Module1, и вы изменяете strMsg в Module2. вернувшись в Module1, вы бы ожидали, что в Module1 ничего не изменилось, но теперь ваш strMsg отличается. Конечно, это в основном статические классы и не имеют состояния, но обычно лучше всего держать все как можно ближе к вызывающему коду. если у вас нет действительно убедительной причины для того, чтобы эти переменные были глобальными, сохраните их локально.

+2

+1 Хорошие аргументы, особенно для переменных «царапин», таких как «N». Неожиданные побочные эффекты от вызова других подпрограмм могут затруднить отладку * намного сложнее. –

+0

И помните каждую глобальную переменную дренажных ресурсов. – 4dmonster