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