реклама на сайте
подробности

 
 
> Объявления, Как принято делать, и кто как реально делает.
SasaVitebsk
сообщение Oct 14 2009, 18:34
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Раньше у меня не было таких проблем. Обычно создавал группу файлов. Как правило все файлы были достаточно обособленными и я их объединял на этапе линковки. Если были групповые общие объявления, то я их делал в main, а в других объявлял как extern.

Проблема возникла в одном проекте. Он получил развитие и теперь существует в нескольких реинкарнациях с различными модификациями и процами. Тем не менее там есть очень крупные общие блоки. Столкнувшись, с проблемой поддержки - пришёл к необходимости общую часть исходников выделить в отдельные файлы/процедуры. А иначе, при внесении изменений приходилось править все проекты. Выделил и переписал, с учётом унификации.

А теперь вопрос.
Эти блоки используют общие глобальные переменные. Как их правильно объявить, чтобы было удобнее использовать и поддерживать, а также было меньше разной писанины?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 14 2009, 19:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Может стоит объединить переменные в глобальную структуру?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 14 2009, 19:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(rezident @ Oct 14 2009, 22:13) *
Может стоит объединить переменные в глобальную структуру?

Проект достаточно крупный. Переменных много. В том числе и структуры тоже есть.

Цитата(sigmaN @ Oct 14 2009, 22:25) *
А ещё где-то он писал, что за более чем 20летнюю практику программирования он может сказать, что реально обычно требуется пять-десять действительно глобальных переменных на большой проект.

В общем так обычно у меня и было. Поэтому вопрос и не возникал. А тут специфика.
Представте что модуль выполняет обработку. А-В-С. Причём часть тела модуля B является специфической для разных проектов.
Если не резать, то всё нормально, но тогда придётся поддерживать 4 разных проекта. Но часть B является незначительной по сравнению с объёмом самого проекта. Остальные части удалось формализовать. Частично пришлось переписать с прицелом на "универсальность". В результате со всеми проектами можно работать по единым правилам. А то раньше - где-то подправишь - в другом вылазит.

За книгу спасибо, попробую почитать.
Go to the top of the page
 
+Quote Post
kurtis
сообщение Oct 14 2009, 21:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Цитата(SasaVitebsk @ Oct 14 2009, 22:38) *
В общем так обычно у меня и было. Поэтому вопрос и не возникал. А тут специфика.
Представте что модуль выполняет обработку. А-В-С. Причём часть тела модуля B является специфической для разных проектов.
Если не резать, то всё нормально, но тогда придётся поддерживать 4 разных проекта. Но часть B является незначительной по сравнению с объёмом самого проекта. Остальные части удалось формализовать. Частично пришлось переписать с прицелом на "универсальность". В результате со всеми проектами можно работать по единым правилам. А то раньше - где-то подправишь - в другом вылазит.


Попробуй-те использовать С++ !
Пишете какой-то виртуальный базовый класс-родитель, который имеет только интерфейс, никакого кода, а потом наследуете каждый конкретный модуль от базового класса и пишете свой, специфический для данного модуля код (т.е. будет класс_А, класс_Б и тд). Константы и перечисления можно запрятать в класс и никто снаружи их не будет видеть. Ну а дальше уже пишите технологию, которая через интерфейс базового класса работает с Вашими модулями. Ну и для пущей уверенности, запихать все по своим пространствам имен (namespace).
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 14 2009, 22:24
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(kurtis @ Oct 15 2009, 00:32) *
Попробуй-те использовать С++ !

Похоже что было бы оптимально. Там и так уже практически готовая работа с объектами. Но всё равно надо переписывать, а это сейчас влом. Отладка займёт слишком много времени. Проект вылизывался года полтора, чтобы ни сучка ни задоринки.

Я просто думал, что существуют какие-то "стандартные решения" на этот случай.

Всем ответившим - спасибо.
smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SasaVitebsk   Объявления   Oct 14 2009, 18:34
|- - zltigo   Цитата(kurtis @ Oct 15 2009, 00:32) Конст...   Oct 14 2009, 22:41
|- - dxp   Цитата(kurtis @ Oct 15 2009, 04:32) Попро...   Oct 15 2009, 04:18
- - sigmaN   Не знаю правда ли, но я недавно прочел такую вещь:...   Oct 14 2009, 19:25
- - sigmaN   Ну тут, ИМХО, кроме Вас никто не решит проблему. Я...   Oct 14 2009, 19:43
- - Faradey   как вариант, объедините специфические "переме...   Oct 14 2009, 20:03
- - Dima_G   Ранее тоже столкнулся с тем, что большая часть код...   Oct 15 2009, 03:09
- - Flexz   Вобщем-то, все что вы предлагаете можно и на С реа...   Oct 15 2009, 07:07
|- - Dima_G   Цитата(Flexz @ Oct 15 2009, 10:07) ИМХО в...   Oct 15 2009, 07:19
|- - dxp   Цитата(Flexz @ Oct 15 2009, 14:07) Вобщем...   Oct 15 2009, 07:30
- - Flexz   ЦитатаНасчет приведения к (void*) - это путь для в...   Oct 15 2009, 08:12
|- - Dima_G   Цитата(Flexz @ Oct 15 2009, 11:12) Это эл...   Oct 15 2009, 08:42
|- - zltigo   Цитата(Dima_G @ Oct 15 2009, 11:42) Отком...   Oct 15 2009, 12:22
|- - demiurg_spb   Цитата(Dima_G @ Oct 15 2009, 12:42) Кодvo...   Oct 15 2009, 15:42
|- - dxp   Цитата(demiurg_spb @ Oct 15 2009, 22:42) ...   Oct 16 2009, 03:08
|- - demiurg_spb   Цитата(dxp @ Oct 16 2009, 07:08) Что вас ...   Oct 16 2009, 20:25
|- - Dima_G   Цитата(demiurg_spb @ Oct 17 2009, 00:25) ...   Oct 17 2009, 08:07
- - Flexz   По теме C vs C++ извините, но.. даже отвечать не х...   Oct 15 2009, 08:55
- - SasaVitebsk   Если бы изначально всё продумывалось, то такого бы...   Oct 15 2009, 11:53
- - _Pasha   Цитата(SasaVitebsk @ Oct 14 2009, 21:34) ...   Oct 15 2009, 15:54
- - sigmaN   Все на столько привыкли к препроцессору, что видим...   Oct 16 2009, 06:23
|- - Dog Pawlowa   Структуры данных и передача указателей на структур...   Oct 16 2009, 19:46
- - sigmaN   Я вот тут призадумался... А как бы нам так объявит...   Oct 17 2009, 12:48
|- - _Pasha   Цитата(sigmaN @ Oct 17 2009, 15:48) Но ка...   Oct 17 2009, 12:56
- - Rst7   ЦитатаЯ вот тут призадумался... А как бы нам так о...   Oct 17 2009, 13:24
- - sigmaN   Цитатаю smile.gif Да все так же: Ну я имел ввиду б...   Oct 17 2009, 15:58
- - Rst7   ЦитатаНу я имел ввиду без использования препроцесс...   Oct 17 2009, 17:19
- - sigmaN   ЦитатаАх простите, я не понял.Ну это не удивительн...   Oct 17 2009, 21:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016