Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

глобальные переменные   Найти похожие ветки 

 
павел   (2003-10-03 01:19) [0]

почему их не рекомендуется использовать, ведь даже в vcl их предостаточно?


 
Ihor Osov'yak ©   (2003-10-03 01:22) [1]

Вероятность ошибки в отноосительно больших проектах значительно выше..

Зы - перед декларацией очередной глобальной - остановись, и ще раз подумай: а может все-же не надо? c. может и мой :-)


 
павел   (2003-10-03 02:00) [2]

а что предпочтительнее использовать и почему?


 
Aristarh ©   (2003-10-03 02:09) [3]

Во-первых, нарушается логика программы.
Во-вторых, глобальные переменные занимают ресурсы системы на
протяжении всей работы программы(если не освободить их явно),
а локальные существуют только лишь в процессе выполнения
процедуры, в которой они объявлены.


 
andre ©   (2003-10-03 02:13) [4]

А если нужна глобальная переменная, то что же делать? Передавать из процедуры в процедуру?


 
Ihor Osov'yak ©   (2003-10-03 02:17) [5]

чистую родниковую воду предпочтительнее использовать. Для употребления в пищу.

А если спич все же о переменных - то локальные, члены классов, в конце концов статические, но с ограничеенной областью видимости (в секции implementation) - это все зависит от архитектуры приложения. Но использование глобальных нужно стремится сводить к строго необходимому минимуму (причины те же - глобольные провоцируют более тесные связи между частями приложений (что также нужно сводить к минимуму), плюс повышают вероятность ошибки из-за возможного конфликта имен, из-за того, что изменить глобальную переменную можно во многих пронраммных модулях, етс..

Для начала просто поверте на слово, а со временем прийдет понимание того, почему этого дейчтвительно не нужно делать..


 
Aristarh ©   (2003-10-03 02:18) [6]

А если нужна сотня, тысяча глобальных переменных, что же делать?
Объявлять их всех глобальными?

Все зависит от ситуации...


 
Ihor Osov'yak ©   (2003-10-03 02:20) [7]

> А если нужна глобальная переменная, то что же делать? Передавать из процедуры в процедуру?

Не рекомендуется - не есть синоним слова запрещается..
Зы - но думать о том, действительно ли оно надо - очень рекомендуется..
Если нужно много глобольных - стоит призадуматься об оптимальности архитектуры приложения..


 
Ihor Osov'yak ©   (2003-10-03 02:21) [8]

Зы - есть системы программирования, где просто отсутствуют глобальные переменные :-)


 
Сергей Суровцев ©   (2003-10-03 02:38) [9]

>павел (03.10.03 01:19)
>почему их не рекомендуется использовать, ведь даже в vcl их >предостаточно?
Используй на здоровье, но только при действительной необходимости, а не просто как норму жизни. При их использовании следи за именами. А в принципе ничем они не хуже.


 
Думкин ©   (2003-10-03 05:39) [10]

> павел (03.10.03 01:19)
> почему их не рекомендуется использовать, ведь даже в vcl
> их предостаточно?

Именно переменные и именно предостаточно?
Если под предостаточно именовать достаточно - то вполне, но если немерянное кол-во, то просвети.


 
павел   (2003-10-03 23:35) [11]

предостаточно - это больше разовых проявлений, во многих юнитах за десяток будет точно

> Именно переменные

var - объявление переменных? =)


 
iZEN ©   (2003-10-04 10:00) [12]

Наружу необходимо выставлять лишь самое необходимое.
Пусть уж лучше всё будет private, затем protected, public - в самую крайность, если уж некуда деваться - такова философия.
Глобальные переменные - пережиток больших и глупых систем. Сейчас мода идёт по пути асинхронного обмена сообщениями (сигналами в старом понимании). Естественно, это актуально в многопоточной среде.


 
павел   (2003-10-04 14:32) [13]


> iZEN © (04.10.03 10:00) [12]
> Наружу необходимо выставлять лишь самое необходимое.

так кто же их выставляет? сидят себе спокойно в implementation...


 
kaif ©   (2003-10-04 18:15) [14]

Существует множество предрассудков. Никогда не использовать глобальные переменные - один из таких предрассудков. Так что используй, если тебе это удобно. Все минусы и плюсы тебе известны. Не вижу никаких оснований, чтобы извращаться там, гда не надо. Вот оператор безусловного перехода (go to) - другое дело. А глобальные переменные - нормальная вещь. Просто как и во всем остальном, желательно и здесь придерживаться минимализма.


 
y-soft ©   (2003-10-04 18:29) [15]

Полностью согласен с kaif © (04.10.03 18:15) [14]. Беда не в глобальных переменных, "goto" etc, а в необдуманном их использовании. Любые крайности вредны. Набор средств должен диктоваться только конкретикой решаемых задач


 
Anatoly Podgoretsky ©   (2003-10-04 21:09) [16]

iZEN © (04.10.03 10:00) [12]
Выставление наружу тут ни при чем, оно лишь увеличивает степень глобальности. Переменные остаются глобальными в пределах модуля. Надо это выставление свести до уровня процедуры и всего лишь. И в процедуре не должно быть вложенных процедур, это тоже другая степень глобальности.

А вот сообщения это другое дело, не зря же виндоус на этом была построена. Свойства тоже хорошая вещь иза контроля за состоянием, из за поддержки методов доступа.


 
Blackman ©   (2003-10-04 22:23) [17]

Есть прекрасная статья на эту тему:
Anatoly Podgoretsky. Формы и глобальные переменные форм
http://delphiclub.ru/forums/index.php?act=ST&f=3&t=267&s=4b5e3caf298167fdd406b58ec1cd3acb


 
Igorek ©   (2003-10-04 22:56) [18]

Я бы предпочел все глобальные переменные обьединить по классам. И нагляднее - и переменная под присмотром. Естественно нужна одна глобальная переменная класса. ;-)



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
1-74235
GreySerg
2003-10-08 20:12
2003.10.23
Как определить процедуру на определённое событие у дина...


14-74391
mfender
2003-10-02 16:05
2003.10.23
Любят ли программисты Формулу-1?


3-73986
AndCot
2003-10-01 09:56
2003.10.23
Индексы CDX в TTable


4-74531
^^^Dragon^^^
2003-08-12 12:49
2003.10.23
Программа без формы


4-74541
Michael Makushev
2003-08-18 13:30
2003.10.23
TThread - и совместное использование данных