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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со многими lib'ами в проекте 
:(
    Опции темы
Alek86
Дата 6.8.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Вопрос такой.

На работе есть проект, состоящий из многих "модулей", который разросся уже до огромных размеров (как мне кажется smile ). И вот решили мы (2 программиста с небольшим опытом работы) понакидать все совместно используемое в либы.
Но тут возник вопрос - как их организовывать?
Есть, к примеру, либа, отвечающая за архивацию-разархивацию данных используется в нескольких модулях, каждый из которых заслуживает собственной либы. И так далее. В итоге получается немаленькое "дерево" зависимостей между модулями.

Сразу появилось множество идей, таких, как:

1. Запихать все используемое в одну либу и не париться... Правда, боюсь представить время компиляции проги, использующей её, если хоть один модуль изменится...

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

3. Понаделать либ не по модулям, а по задачам, которые они должны выполнять... тогда один и тот же модуль будет находиться в разных либах (типа копипаста)...

Вроде, последний вариант ничего страшного не предвещает, но все же хотелось бы услышать мнение опытных программистов, которые, вероятно, сталкивались с подобными проблемами smile

ЗЫ. Если это важно, то пишем мы на Microsoft Visual Studio 2003


--------------------
user posted image    user posted image
PM MAIL   Вверх
Daevaorn
Дата 6.8.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 51
Всего: 70



Необходимо максимально сократить зависимости и расделать бибилотеки по функциональности которую они реализуют.  Так повысится повторное использование кода. Проблемы сборки в данном случае решаются достаточно быстро.
PM MAIL WWW   Вверх
Alek86
Дата 6.8.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



то есть, как я понял, 3й вариант?


--------------------
user posted image    user posted image
PM MAIL   Вверх
Daevaorn
Дата 6.8.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 51
Всего: 70



Некая комбинация из 2 и 3. 
На самом деле при правильно спроектированном приложении проблем с раздедлением на библиотеки нет. Всегда видны как бы составные части системы, которые и оформляются в библиотеки.
Т.к. в С/С++ нет понятия модуля, то хотелось бы чтобы ты сказал, что ты под ними подразумеваешь.
PM MAIL WWW   Вверх
Alek86
Дата 6.8.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



"модуль" - компонент программы, который сам по себе особо и не нужен, но используется (или может использоваться) в различных программахв рамках этого проекта.

Как, к примеру, тот же "модуль" для архивации-разархивации, который представляет собой сейчас либу + ашник с тремя функциями.
Или класс, выполняющий одну функцию - преобразование неких данных в заархивированный файл и обратно. Сейчас представляет собой несколько cpp + h, планируется его "облагородить", наградить интерфейсом и запихнуть тоже в либу. smile Но нужно учитывать, что "модуль" для архивации используется не только для этого класса.

Таких примеров у нас много...


Кстати, как правильно нужно называть подобные "модули"?


--------------------
user posted image    user posted image
PM MAIL   Вверх
Daevaorn
Дата 6.8.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 51
Всего: 70



Ну каждый класс в отдельную библиотеку превращать смылса не имеет. Как я уже говорил, нужно делать по функциональности. Библиотека для рабоыт с файловой системой, библиотека передачи данных по сети и т.д.
Цитата(Alek86 @  6.8.2007,  21:06 Найти цитируемый пост)
Кстати, как правильно нужно называть подобные "модули"? 

"Модули" состоящие из одного класса нужно называть "классами", а что-то более солидное можно назвать и "подсистемой"
PM MAIL WWW   Вверх
Alek86
Дата 7.8.2007, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



спасибо
smile


--------------------
user posted image    user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1191 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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