Главная страница
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.015 c
14-74393
Nik8.
2003-10-03 11:49
2003.10.23
Где взять примеры драйверов ?


1-74168
Yakudza
2003-10-10 14:33
2003.10.23
Поток и TFORM


1-74151
ruslan_as
2003-10-10 17:35
2003.10.23
Как привязать программу к серверу?


1-74144
ZEE
2003-10-10 18:47
2003.10.23
Приколы с памятью занимаемой прогой


14-74384
Igor_thief
2003-10-06 13:25
2003.10.23
ФОРУМ!!!