Информация об изменениях

Сообщение 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>Спасибо
Здравствуйте, lnkuser, Вы писали:

L>Везде, абсолютно везде пишут что глобальные переменные, объекты это плохо и очень плохо.

L>Но нигде нормального ответа как обходится без них я не нашел. На форуме искал.

Для маленькой утилиты вообще пофиг.
А когда проект разрастается, глобальные переменные вызывают только головную боль. Особенно при разрушении глобальных переменных.

L>Допустим есть класс Log, который инициализируется при старте программы гдето в самом начале main().

L>И есть другие части программы которые работают в разных потоках, там тоже используется Log.

Если твой логер будет использоваться в деструкторе глобальных объектов — будет больно.

L>Как я понял это как раз случай для синглетона:

L>но опять таки, много где пишут мол старайтесь избегать extern. А что использовать взамен тогда???
L>Как правильно спроектированные приложения решают проблему глобальных данных?

Избегать в больших проектах, ибо потом заманаешься фантомные баги фиксить.

А также большие проблемы с доступом к глобальным переменным. Какие гарантии thread safe? Сильно мешает отладке.

L>Какие книги есть по данной тематике (а именно физический дизайн приложения), где бы описывалось как правильно строить программу.


L>Спасибо