Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Куда бы подевать глобальные переменные? и прототипы функций... 
:(
    Опции темы
Peter
Дата 23.8.2004, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Проблема: есть большой проект (пара тысяч строк), разбитый на несколько файлов. Там немало глобальных переменных и "общеиспользуемых" функций.
Думаю сделать следующее: создать файл global.cpp, описать в нем нужные глобальные переменные. Создать global.h, описать то же самое как extern. В этом же global.h запрототипировать все функции. Ну, и подключать это файло ко всем файлам проекта.
Что на это скажете? Одобрямс или осуждамс?


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Конструктор
Дата 23.8.2004, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Насчет функций, ИМХО лучше разбить их все по функциональным признакам, и распихать каждую группу по отдельным модулям, ибо название модуля Global.h мало о чем говорит. Насчет переменных, не рекомендуют умные люди использовать глобальные переменные, а так логично, хотя я бы и переменные по модулям разным распихал.

PM MAIL WWW ICQ   Вверх
Peter
Дата 23.8.2004, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Ну, даже если и по разным модулям распихать... Все равно идея та же. То есть, годится?


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
srd
Дата 23.8.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Можно группировать глобальные переменные и функции не только по модулям, но и по классам. Т.е. создается группа классов, содержащих только статические члены. ИМХО, довольно удобно, т.к. можно контролировать доступ к переменным (private, public). Или использовать пространство имен rolleyes.gif


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Конструктор
Дата 23.8.2004, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Цитата
Все равно идея та же. То есть, годится?


Ну дык таким способом это и делается, прописывать в цпп, потом вставлять соответсвующий инклуд.
PM MAIL WWW ICQ   Вверх
Nastya
Дата 23.8.2004, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



1. Функции и те переменные которые им необходимы лучше в Dll запихнуть. Так кулюторней и в дальнейшем будет удобно
2. Количество глобальных переменных свести на минимум
3. Хорошо бы еще в отдельный namespace запихнуть это все воизбежание smile.gif


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
gepard
Дата 23.8.2004, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата
2. Количество глобальных переменных свести на минимум

Это верно.
Знаю по личному опыту: когда редактируешь какую-то библиотеку(*.h файл), то потом все файлы, которые включают эту библиотеку требуется перекомпилировать.
Т.е. тебе при заведении новой глобальной переменной придётся перекомпилировать весь проект.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
chipset
Дата 23.8.2004, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Что то у меня не получается так чтобы перекомпиляция при добавлении одной переменной занимала очень много времени.
С определенного момента я вообще забыл что такое глобальные переменные, и стараюсь ни в коем случае их не использовать (пока, получается).
Так что как уже посоветовали распихать их лучше по классам...

Это сообщение отредактировал(а) chipset - 23.8.2004, 20:53


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Peter
Дата 24.8.2004, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Цитата(Nastya @ 23.8.2004, 16:25)
1. Функции и те переменные которые им необходимы лучше в Dll запихнуть. Так кулюторней и в дальнейшем будет удобно

Вот это действительно удобное решение! Спасибо!
Тебе плюс в рейтинге.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
lynx_916
Дата 24.8.2004, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 13.6.2004
Где: Молдова

Репутация: нет
Всего: 1



а мне по классам больше нравится.
или по функциональности.
так сразу поймёшь где там чего


--------------------
Who dares, wins. (с) Solid Snake
PM MAIL ICQ YIM MSN   Вверх
Peter
Дата 25.8.2004, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Да дело в том, что некоторые массивы и переменные используются ВЕЗДЕ. Хочешь - не хочешь, а делай их глобальными. А передавать их параметрами функций - замучаешься.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.