ОБСУЖДЕНИЕ

Глобальные переменные

21 ответов 11,7 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Уважаемые программисты!

Потрудитесь ответить на мой вопрос и, если можно, обосновать.

Насколько оправданны глобальные переменные вообще и на уровне формы в частности.
Например, иметь на форме глобально ws, uidoc, doc, session, db.
Оправданно ли это или засирание кода?

Я пока не буду высказывать свою точку зрения, дабы никого не склонить в какую-либо сторону.
Спасибо!
 
Для: Omh
Я выносил в глобальные переменные session и db...
Встретился с таким глюком - глобальные переменные заполнялись через Initialize. Если использовать метод из данной библиотеки при помощи execut'a, то Initialize не запускался... по-моему так

Вобщем, по моему мнению глобальные переменные лучше не использовать
 
Вот ещё был такой случай (не понимаю сейчас был ли это глюк или всё-таки понастоящему).
LS'ный Shared Action юзал переменную doc, которая была задекларена на форме, куда он был помещён.
Т.е. на рантайме он подхватывал этот объект и начинал с ним работать.

Помню тогда хотелось вырвать руки программеру создавшему это.
Правда, сейчас мне кажеться, что это невозможно.
Но там скрипты были 1999 года :)
 
<!--QuoteBegin-Omh+18:01:2008, 18:32 -->
<span class="vbquote">(Omh @ 18:01:2008, 18:32 )</span><!--QuoteEBegin-->Насколько оправданны глобальные переменные вообще и на уровне формы в частности.
[snapback]94126" rel="nofollow" target="_blank[/snapback]​
[/quote]
ИМХО, в топку...
Во-первых, создавать себе лишние проблемы при работе с LS-библиотеками (особенно писанными не Вами)
Во-вторых, ИМХО, лишний разброс кода, спустя некоторое время, разбираться даже в своем же коде будет тяжко,а в чужом - так вообще смерть...
 
Согласен с Azrael. Глобальные переменные очень сильно усложняют жизнь при сопровождении.
Создание экземпляров NotesSession и NotesUIWorkspace не стоит ничего (менее 1/100000 секунды на средней машине), все переменные ссылаются на один объект:
Код:
Dim session1 As New NotesSession()
Dim session2 As New NotesSession()
Print session1 Is session2 'True
Я считаю, что если вдруг возникла необходимость использовать глобальную переменную, значит в проекте что-то неправильно. Пользуйтесь параметрами. Если их много - создавайте классы.
Казалось бы, можно использовать глобальную Public-переменную для Singleton'а, но гораздо удобней использовать Property Get или функцию, которая, к тому же, позволит использовать "ленивое" создание объекта:
Код:
Private singleton As SuperPuperClass
Public Function getInstance()
If singleton Is Nothing Then Set singleton = New SuperPuperClass()
Set getInstance = singleton
End Function

<!--QuoteBegin-Omh+18:01:2008, 19:30 -->
<span class="vbquote">(Omh @ 18:01:2008, 19:30 )</span><!--QuoteEBegin-->Правда, сейчас мне кажеться, что это невозможно.
[snapback]94143" rel="nofollow" target="_blank[/snapback]​
[/quote]
Еще как возможно! Не раз встречал такое в СЭД не-скажу-название. Работает. :)
 
никогда и никаких проблем с глобальными переменными не имел.. всякая глобальная переменная локальна в своей области применения.. разумеется нужно писать код аналогичный в приведенном выше посте, с этим я полностью согласен, структурность и логичность -- большая читабельность и понятность..
 
Просто тут небольшой разгорелся небольшой спор на полезность применеия глобальных переменных.
Я - сугубо против.
Единственный случай, где, кмк, не обойтись без глобальных переменных это в процедуре, вызываемой конструкцией вида
Код:
On Event PostDOMParse from DOMPArser Call SuperProcedure
Вот в эту самую SuperProcedure нельзя передать параметер.

А насчёт того, что читабельность чужого кода сильно понижаеться - это точно.

Кстати ни разу не встречался с необходимость передавать объекты типа NotesSession или NotesUIWorkspace через параметры: нафига? ведь всегда можно задекларить новый...
 
Иногда использую глобальные переменные, но это очень редко.. по ситуации...
 
Обалдеть, теме уже 2 года почти. :D

За последнее время много нового и умного народа пришло в форум.
Может у кого-нибудь есть мнение по теме?
Хотелось бы выслушать бест практисис из вашего опыта.
Спасибо!

P.S. Эх, это тема была навеяна в своё время тем, что сменил работу и на новой работе использование глобальных переменных было возведено в ранг обязательных условий. Я был ошарашен.
 
чем больше область видимости переменной тем хужее!
в LS иногда без глобальной переменной не обойтись, вот только тогда их и юзать.
 
товарищи а подскажите мне одну такую штуку
а как обьявить самую глобальную переменную в лотусе? :D
Пример
заходит юзер в базу а у него тут тыц и спрашивается пин код на его карточку доступа
и чтобы не переспрашивать его по 20 раз пока он там виды щелкает, формы открывает, хотелось бы засунуть в глобальную переменную
попрошу не путать с профилями, инишками :)
 
ToxaRat
гдета была тема про обьекты глобальные ....

или тут или на нотес.ру


не могу найти ссылку
 
Omh
про UI объекты - яб даже не спрашивал ;)
малевич будет неуловимым - мастера индусского кодирования не позволят пройти мимо :D
кол-во сессий яб берёг тока на случай DIIOP - они там типа грузят сервак
да врядли они нужны перманентные: таймауты, обрывы связи - полюбасу им конец
в сухом остатке, из перечисленного: doc, db
но этож бэкенд и смысл их глобализации, для меня, сомнителен...

др. словами - область применения глобальных LDN объектов в распределённой, многозадачной, многопоточной среде - спорна

есть языки программирования, где это - вовсе абсурд (глобальная переменная, порой и переменные - не переменные ;) ) - процедурные...
одним из кот. является erlang, кот. в с вою очередь используется в CouchDB...

кто не знает старину Каца ;) ?!
продолжателя реализации/имплементации Нотуса, под крылом апача:
http://couchdb.apache.org/
и никаких индусских UI :)
 
Глобальные переменные используются. Вопрос в умении их использовать.
Здесь в тексте и комментах это обсуждали.
 
VladSh
О, я это читал ещё когда пешком под стол ходил.
Не знал, что это ты.
Проникся :)
 
О, я это читал ещё когда пешком под стол ходил.
Да ладно тебе))) Тут все прикольные челы! Я столько нового узнал... Очень много толковых людей! Хоть дизайн и мрачноватый, но классная конфа, гораздо лучше, чем теперь Интертраст. Радует, что есть ещё место, где все могут вот так собраться... заходишь на форум и каждый раз что-то интересное для себя выносишь. :)
 

Похожие темы

Статистика тем

Создано
Omh,
Последний ответ от
vital,
Ответы
21
Просмотры
11 687