![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 1 Всего: 56 |
почему некий внешний объект должен хранить локальные настройки окна? Это не верно. Есть некие глобальные настройки, их можно сделать через глобально доступный синглтон. Но уж никак не делать глобальную переменную. |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
и каково же решение этой проблемы? чем например extern Сonnection_t connection; отличается от class SomeNiceSingleton ... { ... Сonnection_t connection; ... } Добавлено через 1 минуту и 33 секунды
чем глобальный тип (класс) лучше глобальной переменной? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
передавать адрес connection в каждую функцию его использующую религия не позволяет? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
MAKCim, так это будут самые что ни есть неглобальные переменные. Обычный инстан-метод по сути.
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 1 Всего: 56 |
1. Нет проблемы имен. 2. Нет проблемы с меж-еденица-трансляционным взаимодействием. 3. При небольшой модификации нет проблем с межпроцессным взаимодействием |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
такое в С++ еще можно передавать в кач. параметра конструктора и хранить ссылку(указатель, копию) в экземрляре объекта
возможностью управлять временем жизни синглтона, в отличии от глобальной переменной позволяет, если что, это был антипример ![]() |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: -1 Всего: 69 |
Пару фраз вырвал из книги. Полный текст статьи занимает 2-3 страницы.
С.Х.Дьюхерст. Скользкие места С++.
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
А чем синглтон принципиально отличается от глобальной переменной? Под глобальной переменной я, например, понимаю не только обычную переменную типа int GlobalIntA, но и объект какого-либо класса, доступный из любого модуля проекта. Какая разница? Доступ через интерфейсные функции? Так и к обычной глобальной переменной можно через интерфейс доступ организовать. Вопрос не в том как это назвать и во что обернуть. Важно то, что существует некий объект (один на проект), состояние которого можно изменить из многих мест в проекте. Т.е. глобальный объект. И какая религия мешает использовать такие объекты (переменные) лично я не понимаю. Зачем вертеться ужом на сковородке только из-за того, что кто-то сказал, что глобальные переменные использовать не надо. Это мое ИМХО, естественно, я достаточно часто использую глобальные переменные когда они мне удобнее и никаких неудобств пока не ощутил. Правда, если бы я сделал глобальной переменную int i - я думаю ощутил бы некоторые неудобства, но для этого на плечах должно быть не только устройство для приема пищи и просмотра телевизора. ИМХО. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
синглтон - это когда объект некоторого типа, один на все приложение, и другой такой-же создать нельзя, это не то-же самое что и глобальная переменная ![]() |
|||
|
||||
Cтpaнник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 12.10.2008 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
||||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
Proghat,
Как лучше писать первым способом и почему? чтобы не прослыть ламером :eek: :gigi: |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Что такое LOC? У меня варианты: Чистящие средства: http://www.amway.ru/catalog?category=1094 Влажные салфетки: http://aukro.bigmir.net/item589863303-loc-...e-salfetki.html Библиотека конгресса США: http://www.loc.gov/index.html Да не подумайте, что я распространяю СПАМ. Про аббревиатуры уже был разговор. Я не знаю, что такое LOC. Вы имеете в виду кол-во строк? Модулей? Отвечаю: Размер проекта в LOC-ах примерно по 50К на ШКРАБа ![]() |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
Lines Of Code
|
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
тем, что поддерживать нужно только интерфейс. Используя глобальную переменую мы связываем между собой код, который ею пользуется. Сопровождать придется либо внутри " глобального типа" (что проще) либо по всему коду, где глобальная переменная используется советую читать много раз цитату, которую привел zim22, может быть придет осознание. Главная суть проблемы глобальных переменных совсем не в том, что состояние меняется из разных мест... Глобальные переменные также удобны как удобно нарушение инкапсуляции в классах.
согласен. И совсем не нужно для этого вертеться ужом. |
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 1 Всего: 59 |
Ну? Глобальная переменная некого типа тоже одна на все приложение и вторую такую-же создать нельзя. Ведь переменная типа "Класс_сингл_тон" одна? - Да. Она глобальная? - Да. В чем ее принципиальная разница от переменной не класса "Класс_сингл_тон"? Что значит сопровождать внутри кода? А если поменяем интерфейс - его не надо будет сопровождать внутри кода? Чем отличается сопровождение вызовов интерфейса? К глобальной переменной можно также сделать функции доступа по типу интерфейса. Просто если разделять два понятия как разные - тогда все понятно, но лично для меня они принципиально одинаковые:
Мда. Я это подозревал, но не думал, что так просто. Думал - некая величина, оценивающая объем проекта ![]() Строк кода - не знаю сколько (хотел посчитать, но что-то простого инструмента не смог найти, чтобы сразу в каталоге и во всех вложенных посчитать кол-во строк CPP и H). Проект небольшой, сразу скажу. По поводу кол-ва человек - этот проект чисто мой (пока). Сейчас просто я немного другими делами занимаюсь. Если подскажете простой способ (без написания программки подсчета - лень) я скажу сколько строк сейчас проект. Одно время работал в команде, где было человек 15 и проекты были намного солиднее. И глобальные переменные использовали, и никто не путался, и проблем не было. Видимо потому, что начальство было отличное и ТЗ проработанные и взаимодействие отлажено. |
||||
|
|||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |