![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Проблема: есть большой проект (пара тысяч строк), разбитый на несколько файлов. Там немало глобальных переменных и "общеиспользуемых" функций.
Думаю сделать следующее: создать файл global.cpp, описать в нем нужные глобальные переменные. Создать global.h, описать то же самое как extern. В этом же global.h запрототипировать все функции. Ну, и подключать это файло ко всем файлам проекта. Что на это скажете? Одобрямс или осуждамс? -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| Конструктор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 12.5.2004 Где: Москва Репутация: нет Всего: 10 |
Насчет функций, ИМХО лучше разбить их все по функциональным признакам, и распихать каждую группу по отдельным модулям, ибо название модуля Global.h мало о чем говорит. Насчет переменных, не рекомендуют умные люди использовать глобальные переменные, а так логично, хотя я бы и переменные по модулям разным распихал.
|
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Ну, даже если и по разным модулям распихать... Все равно идея та же. То есть, годится?
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Можно группировать глобальные переменные и функции не только по модулям, но и по классам. Т.е. создается группа классов, содержащих только статические члены. ИМХО, довольно удобно, т.к. можно контролировать доступ к переменным (private, public). Или использовать пространство имен
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Конструктор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 12.5.2004 Где: Москва Репутация: нет Всего: 10 |
Ну дык таким способом это и делается, прописывать в цпп, потом вставлять соответсвующий инклуд. |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
1. Функции и те переменные которые им необходимы лучше в Dll запихнуть. Так кулюторней и в дальнейшем будет удобно
2. Количество глобальных переменных свести на минимум 3. Хорошо бы еще в отдельный namespace запихнуть это все воизбежание -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Это верно. Знаю по личному опыту: когда редактируешь какую-то библиотеку(*.h файл), то потом все файлы, которые включают эту библиотеку требуется перекомпилировать. Т.е. тебе при заведении новой глобальной переменной придётся перекомпилировать весь проект. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Что то у меня не получается так чтобы перекомпиляция при добавлении одной переменной занимала очень много времени.
С определенного момента я вообще забыл что такое глобальные переменные, и стараюсь ни в коем случае их не использовать (пока, получается). Так что как уже посоветовали распихать их лучше по классам... Это сообщение отредактировал(а) chipset - 23.8.2004, 20:53 --------------------
|
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Вот это действительно удобное решение! Спасибо! Тебе плюс в рейтинге. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| lynx_916 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 13.6.2004 Где: Молдова Репутация: нет Всего: 1 |
а мне по классам больше нравится.
или по функциональности. так сразу поймёшь где там чего -------------------- Who dares, wins. (с) Solid Snake |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Да дело в том, что некоторые массивы и переменные используются ВЕЗДЕ. Хочешь - не хочешь, а делай их глобальными. А передавать их параметрами функций - замучаешься.
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |