![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
конечно же нужно понимать, что всё это - рекомендации, касающиеся только одного аспекта процесса восприятия кода, есть ещё и другие
если использование глобальной переменной выглядит естественно и не вносит непонимания в код - надо использовать глобальные переменные если вносит непонимание, но уменьшает его эффективность - надо решать, что важнее -------------------- qqq |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Я стараюсь строить программу в виде восходящего дерева/деревьев. Т.е. в глобальной области один или несколько стволов, все остальное дочерние элементы. Так принято у борланда в VCL. Неплохая модель.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
а кто мешает объявить глобальную переменную в соответствующем пространстве имён? (которые и были придуманы в частности для того, чтобы формализовать и развить всякие префиксы, которые люди придумывали для отражения области задач объектов) кроме того, глобальность и компоновка данных в структуры - в некотором смысле почти независимые понятия и со стековыми объектами можно встретить такое:
от того, что они стали локальными проблема с тем, что на них всегда надо смотреть в паре, никуда не пропала с другой стороны те же структуры тоже могут быть глобальными... -------------------- qqq |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Правильно. Но если рассуждать чисто логически, то переменная в пространстве имен уже не глобальная, она уже принадлежит определенной группе и доступ к ней уже не прямой. В этом смысле я слабо понимаю чем это лучше создания класса, ведь класс позволяет точно также спрятать переменную под крыло своего пространства имен. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
суть в том, что он - открытый всем именно это я подразумевал под глобальностью пространства имён всего лишь организуют, но не контролируют доступ
ну а для класса там уже всё по-другому для доступа к переменной тогда нужен объект, который её содержит, значит, его нужно передать функции, а значит, он будет упомянут в строке (ну если, конечно, сам объект объявлен глобально, то снова появляется глобальная переменная, просто другого типа) -------------------- qqq |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 15 Всего: 124 |
Вот эта книжка поможет весьма (дороговата, но купите бумажную!) Добавлено через 3 минуты и 49 секунд Я, к примеру, для этого использую namespace (с глобальными (уже не совсем и глобальными, выходит) inside) |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Значит если я запихаю все свои глобальные данные в некую структуру и буду их там переваривать это есть выход из сложившейся ситуации. И уже по мере надобности я буду обращаться к ее элементам. Я правильно понял? |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
структуры - способ собрать вместе данные, которые связаны по смыслу, отражают какую-то сущность глобальные-неглобальные - неважно так что это сильно зависит от "сложившейся ситуации" -------------------- qqq |
|||
|
||||
comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Мда. а что, сбор в структуру как-то ограничит доступ к ним??? чтобы ограничить доступ, можно собирать их в приват отдельного объекта-синглетона и открывать доступ, например, только определенным классам. хотя какими способами наиболее корректно реализовать последнее... ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Конечно, для доступа нужно обращаться уже через точку/стрелочку, а не просто по имени. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
Тогда уж лучше protected и делать друзей класса. Это сообщение отредактировал(а) Dronchik - 9.10.2007, 17:08 -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
А считает ли кто-нибудь плохой такую вот глобальную "переменную":
Это сообщение отредактировал(а) archimed7592 - 9.10.2007, 18:29 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
и не дай бог кому-то захотеть посчитать логарифм
![]() впрочем, это уже проблема макросов, а не глобальных переменных а журнальчик такой я и сам частенько делаю, так и использую
-------------------- qqq |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну это наглядности ради ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
проблема препроцессора в его незнании о том, что такое C++
![]() (в частности пространства имён и классы) какое бы осмысленное имя не дать этому define'у, найдётся программист, которому захочется так назвать метод своего класса, и если повезёт, всё закончится ошибкой компилятора... а сама журнализация - вполне нормальный пример того случая, когда глобальные переменные естественны, и ничего страшного их доступность всем не приносит... -------------------- qqq |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |