![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
Вопрос такой.
На работе есть проект, состоящий из многих "модулей", который разросся уже до огромных размеров (как мне кажется ![]() Но тут возник вопрос - как их организовывать? Есть, к примеру, либа, отвечающая за архивацию-разархивацию данных используется в нескольких модулях, каждый из которых заслуживает собственной либы. И так далее. В итоге получается немаленькое "дерево" зависимостей между модулями. Сразу появилось множество идей, таких, как: 1. Запихать все используемое в одну либу и не париться... Правда, боюсь представить время компиляции проги, использующей её, если хоть один модуль изменится... 2. Создать для каждого модуля по либе... Но тогда при добавлении либы с одним модулем нужно будет добавлять и либы, от которых первая зависит и т.п. Поскольку модулей немало, то это тоже не самый лучший вариант. 3. Понаделать либ не по модулям, а по задачам, которые они должны выполнять... тогда один и тот же модуль будет находиться в разных либах (типа копипаста)... Вроде, последний вариант ничего страшного не предвещает, но все же хотелось бы услышать мнение опытных программистов, которые, вероятно, сталкивались с подобными проблемами ![]() ЗЫ. Если это важно, то пишем мы на Microsoft Visual Studio 2003 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Необходимо максимально сократить зависимости и расделать бибилотеки по функциональности которую они реализуют. Так повысится повторное использование кода. Проблемы сборки в данном случае решаются достаточно быстро.
|
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
то есть, как я понял, 3й вариант?
|
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Некая комбинация из 2 и 3.
На самом деле при правильно спроектированном приложении проблем с раздедлением на библиотеки нет. Всегда видны как бы составные части системы, которые и оформляются в библиотеки. Т.к. в С/С++ нет понятия модуля, то хотелось бы чтобы ты сказал, что ты под ними подразумеваешь. |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
"модуль" - компонент программы, который сам по себе особо и не нужен, но используется (или может использоваться) в различных программахв рамках этого проекта.
Как, к примеру, тот же "модуль" для архивации-разархивации, который представляет собой сейчас либу + ашник с тремя функциями. Или класс, выполняющий одну функцию - преобразование неких данных в заархивированный файл и обратно. Сейчас представляет собой несколько cpp + h, планируется его "облагородить", наградить интерфейсом и запихнуть тоже в либу. ![]() Таких примеров у нас много... Кстати, как правильно нужно называть подобные "модули"? |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Ну каждый класс в отдельную библиотеку превращать смылса не имеет. Как я уже говорил, нужно делать по функциональности. Библиотека для рабоыт с файловой системой, библиотека передачи данных по сети и т.д.
"Модули" состоящие из одного класса нужно называть "классами", а что-то более солидное можно назвать и "подсистемой" |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
спасибо
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |