Здравствуйте, lnkuser, Вы писали:
L>Везде, абсолютно везде пишут что глобальные переменные, объекты это плохо и очень плохо. L>Но нигде нормального ответа как обходится без них я не нашел. На форуме искал.
Для маленькой утилиты вообще пофиг.
А когда проект разрастается, глобальные переменные вызывают только головную боль. Особенно при разрушении глобальных переменных.
L>Допустим есть класс Log, который инициализируется при старте программы гдето в самом начале main(). L>И есть другие части программы которые работают в разных потоках, там тоже используется Log.
Если твой логер будет использоваться в деструкторе глобальных объектов — будет больно.
L>Как я понял это как раз случай для синглетона: L>но опять таки, много где пишут мол старайтесь избегать extern. А что использовать взамен тогда??? L>Как правильно спроектированные приложения решают проблему глобальных данных?
Избегать в больших проектах, ибо потом заманаешься фантомные баги фиксить.
А также большие проблемы с доступом к глобальным переменным. Какие гарантии thread safe? Сильно мешает отладке.
И любой чих — может положить все приложение.
Например в хроме, всякие там дескрипторы хранятся в глобальных мапах. И как последствие регулярные баги связные с этим приколом.
L>Какие книги есть по данной тематике (а именно физический дизайн приложения), где бы описывалось как правильно строить программу.
L>Спасибо