Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
павел   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.009 c
7-74484
Gepard
2003-08-08 11:56
2003.10.23
Serial port & nine-bit @NT


1-74214
GreySerg
2003-10-09 19:53
2003.10.23
Есть ли в Delphi функция , которая возвращает из URL файл ?


3-74052
Bezpal
2003-10-02 16:56
2003.10.23
Вопрос про данные из таблицы и TreeView...


7-74515
Шустрый
2003-08-11 12:22
2003.10.23
Как получить текст из TEdit не моего приложения?


3-74079
satron
2003-10-02 10:43
2003.10.23
Как изменить цвет шрифта в некоторых строка ДБГрида ????





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский