[C++] Почему не рекомендуют использовать глобальные переменные? - Вопросы по С+

Вопрос [C++] Почему не рекомендуют использовать глобальные переменные?

Регистрация
7 Фев 2013
Сообщения
72
Репутация
0
Спасибо
0
Монет
0
Помню на лекциях препод говорил что глобальные переменные использовать не рекомендуется. Вроде как доступ к ним осуществляется дольше. Но я не понимаю, чем обращение к памяти в стеке быстрей или лучше чем к глобальной? И если использовать static переменные, получается они равно такие же глобальные, только формально компилятор прячет их имена от меня вне области? Так и не понял, чем глобальные переменные плохи.
 
Регистрация
27 Янв 2013
Сообщения
79
Репутация
1
Спасибо
0
Монет
0
1. Непрослеживаемость изменений. Ты не можешь знать, не изменит ли какая-то функция глобальную переменную, и будешь использовать эту переменную после из расчета, что она не изменена. 2. Чтобы узнать где глобальная переменная меняется, тебе надо просмотреть практически всю программу. 3. Ты можешь запутаться в именах, если их очень много 4. Иногда они бывают к месту, но очень редко.
 
Регистрация
27 Ноя 2013
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
Проблема с глобальными переменными в том, что любой метод может менять их значения. Если у вас код на 5000 строк, в котором 30 методов / функций контролировать значение переменной становится очень трудным. В каком-нибудь методе взял и случайно изменил значение, а в другом методе, ты думал, что значение одно, а оно на самом деле другое, и ищешь полдня в каком месте программы поменялось значение.
 
Регистрация
18 Авг 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Это относится только к очень большим проектам. Если обращение к переменной происходит из другого сегмента памяти, то мы уже упираемся в недостатки архитектуры х-80-х процессоров.
 
Сверху Снизу