Глобальные переменные для обмена данными между формами - PullRequest
0 голосов
/ 14 сентября 2011

Является ли хорошей практикой использование глобальных переменных в приложении VB (.NET) для обмена данными между формами?

В качестве глобальной переменной я имею в виду открытую переменную, определенную в модуле, а не открытый членили свойство класса.Более того, как мое личное правило, я никогда не обращаюсь к глобальной переменной из класса, но я передаю значения в класс через функции.

Я знаю, что я не являюсь другом глобальных переменных и их злоупотребления, но естьнекоторые случаи обмена данными в формах, где они кажутся единственным способом создания простого / понятного кода.

Пример 1: мое приложение запускается с аргументами командной строки.Мне нужно получить доступ к этим аргументам во всех моих формах: я просто читаю и проверяю аргументы в моем событии загрузки MDI, а затем сохраняю их в глобальных переменных.Таким образом, я могу очень просто прочитать эти значения из всех моих форм.

Пример 2: Я разрабатываю программу, которая записывает события приложения в протокол EventLog (например, Windows EventLog).Я написал класс EventLog, который обрабатывает добавление, отображение, сохранение, сортировку EventLog.Затем я поместил в модуль глобальную переменную gEventLog в качестве экземпляра класса EventLog и создал объект при загрузке формы MDI.Таким образом, у меня есть глобальная переменная, и я могу обрабатывать EventLog из каждой формы (MDI и дочерний элемент) в моей программе.С другой стороны, я мог бы создать EventLog как открытый член или свойство моей формы MDI, и это было бы то же самое.

Я нашел и прочитал уже некоторые обсуждения, но более приспособленные к программированию на C или к основным вопросам обсуждения, как в:

Являются ли глобальные переменные плохими?

http://c2.com/cgi/wiki?GlobalVariablesAreBad

и на VB это:

Объявите глобальные переменные в Visual Studio 2010 и VB.NET

Есть какие-либо предложения по поводу конкретного случая обмена данными между формами (а не между классами и другими компонентами программы)?Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2011

А как насчет использования контейнера IoC?

Инверсия контроля (определение из Википедии)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...