Задать вопрос
beerdy
@beerdy
https://vk.com/beerdy

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

Так почему во всех языках не рекомендовано использовать глобальные переменные?
Тема больше не нагугление а на обоснование. У кого какие мысли?
  • Вопрос задан
  • 1983 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 3
DevMan
@DevMan
потому что становиться легко выстрелить в коленку.
например, при рефакторинге переименовав переименную не во всех методах и тому подобные сайдэфекты.
или установив сторонний модуль/библиотеку/etc, где используется переменная с таким же именем.
усложняется контроль данных и еще куча всего. нет особого смысла повторять что уже было написано:
https://cbabhusal.wordpress.com/2015/09/27/ruby-wh...
softwareengineering.stackexchange.com/questions/14...
Ответ написан
Комментировать
mbeloshitsky
@mbeloshitsky
Вебдев, систем оперейшонс, ж.д. автоматика
Чем больше область видимости у переменной, тем сложнее уследить за тем где и на что она влияет. У глобальной переменной область видимости самая большая, соотвественно, уследить за ней труднее всего.
Ответ написан
Комментировать
@rPman
грубо говоря - реентерабельность, написанный код должен не зависеть от того, запущен он уже или нет (я не говорю про логику приложения, а про заложенные изначально ограничения, при использования глобальных переменных)

это одно из правил написания приложений, - вы не знаете, понадобится ли вам в будущем это или нет, но заранее не ограничиваете себя в этом, используя опасный подход в программировании.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vsuhachev
Глобальная переменная это зависимость, что ведет к тому что код нельзя повторно использовать (перенести в другой проект, например).

Ситуация с глобальными переменными похожа на ситуацию с goto. Оба инструмента бывают очень полезны, но без знания всех особенностей ими легко злоупотребить во вред. Поэтому нубам их просто запрещают использовать без объяснений т.к. объяснять все тонкости будет дольше и все равно не поймут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы