Форум программистов, компьютерный форум CyberForum.ru

Как правильно организовывать проект из нескольких файлов? - C++

Восстановить пароль Регистрация
 
TimeToWork
4 / 4 / 0
Регистрация: 13.04.2013
Сообщений: 25
15.03.2016, 18:10     Как правильно организовывать проект из нескольких файлов? #1
В данный момент отрыл свой старый проект (и тогда был новичком и сейчас, два года не прогал). Проект крупный, написан ужасно и совсем нечитаем. В связи с этим хочу поделить его на несколько файлов и потом (если это считается хорошим тоном и Вы считаете что поможет с красотой кода) перевести всё на работу с классами.

Давайте на примере. Допустим, программа состоит из нескольких логических частей, разнесём их в отдельные файлы. Пока без классов. Пускай теперь есть файл1.срр, файл2.срр, файл3.срр и т.д. У каждого из них свои ресурсы для внутреннего пользования и функции, которые данный логический блок предоставляет для всеобщего пользования.

1) Какой из описанных далее вариантов следует использовать?

а) К каждому файлу создаём 2 заголовка, допустим к файл1.срр это будут Заголовок_для_себя1.h (в нём прописываются ресурсы для внутреннего пользования в данном файле) и Заголовок_предоставляемого_другим1.h. В начале файл1.срр мы делаем #include обоих хедеров, в других файлах, использующих методы из файл1.срр мы делаем #include только второго хедера. Так делать норм или это будет дурной тон?

б) Заголовок с ресурсами для внутреннего пользования не создаём, а просто всё его содержание прописываем в начале файла файл1.срр. Создаётся только заголовок, который описывает что данный файл предоставляет другим.

2) Допустим файл2.спп и файл3.спп используют из файла1.спп разные наборы функций. Нормально ли грузить общий список предоставляемого файлом1 или лучше для каждого выдернуть из предоставляемого файлом1 набора лишь те конкретные функции, которые будут использоваться?

3.а) Есть море глобальных переменных, пытаюсь от них избавиться или хотя бы значительно уменьшить количество. Стоит ли избавляться полностью (я так понимаю это сильно поможет потом перевести проект к работе с классами) или лучше иметь некий набор глобальных переменных, но зато при вызове функций списки параметров будут значительно меньше? Или глобальные переменные дурной тон в принципе? Думал сделать их локальными в том файле, в котором они больше всего востребованы, прописать методы доступа. Но получается дурная работе описывать специальный класс, у которого будет лишь 1 копия.

3.б) Если глобальные переменные оставлять, то сделать под них отдельный файл в котором они будут описаны и отдельный .h файл в котором они будут описаны со словом extern для предоставления в пользование другими файлами?

4) По поводу классов.
Вот пример - есть некий массив (такая себе база данных), функция её заполнения из заранее подготовленного файла и функция доступа к нужному элементу:
C++
1
2
3
4
5
const int DatabaseSize = 1234567;
float Database[DatabaseSize];
 
void LoadDatabase();
float GetElementFromDatabase(param1, param2, param3);
Стоит ли из этого клеить класс? С одной стороны будет очень логично смотреться, с другой - этого класса я создам ровно 1 представителя. Оки, допустим объединил в класс. К данной базе буду обращаться из многих разных мест программы, значит логично будет либо делать представителя класса глобальным (чтобы не протаскивать указатель как параметр для десятков функций) либо же делать саму базу float Database[DatabaseSize] глобальной и функцию доступа к ней тоже. В таком случае вопрос - зачем такое объединение в класс вообще нужно, оно же получается высосано из пальца? Или всё же надо?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jdzvk
-73 / 10 / 2
Регистрация: 07.03.2016
Сообщений: 211
15.03.2016, 20:59     Как правильно организовывать проект из нескольких файлов? #2
f[[f[)/ - в смысле "аххах)".
1. ваш проект.(?) 2. крупный проект(?). 3. написан ужасно(True). *доказано вышеприведённым текстом.
обратная ретроспектива:
3. вам этот проект роботизированными ручками Иск.Ин печатал на не совсем п0нятом языке?
*Иск.Ин в смысле искуственный интеллект типа, для краткости.
2. крупный проект. -он и работать будет так, как исполнено ваше сообщение?
1. ваш. - если он ваш, вы можете делать с ним что пожелаете, если
не ограничены какими-либо соображениями, временными параметрами или рамками, и|или чем либо.
----
вы обращаетеь за консультацией, и это проект = вам нужно её(консультацию)
- либо профинансировать,
- либо заинтересовать могущего вам её предоставить,
- либо заставить как либо.
----
подсказка1:> чем в более общем виде вам потребуется консультация, тем дороже она будет вам стоить.
подсказка2:> чем позже вы обратитесь за консультацией, тем более форсированно вам придётся выполнять проект. вернее, получать результаты. -сейчас же вроде везде конкуренция, или ошибаюсь?(?риторический)

Добавлено через 24 минуты
*предоставить доступ, не предоставить, продолжать что-то делать, или положить на полку ещё на пару лет.
"в данный момент открыл свой проект".
--
*в "данный момент" у меня открыто ~150 окон в браузере. аж буззер на материнке повизгивает.
пять минут назад открыл, а через пять минут закрыл. - делать то вы что-либо - хотите?

Добавлено через 1 час 21 минуту
..хм. тут будет уместна цитата. :>Стив Возняк.
после беседы с менеджментом Yota, и
осмотра старой версии YotaFon:> ..................:>."Я не могу ждать 2 года".

*это была подсказка3.
Топик-стартер литературно презентовал проблему.
и, ожидая, что кто то подскажет, как линковать проект {1.срр, 2.срр, 3.срр},
-смылся. в надежде избежать холивара, разумеется.
--
а мне, чтобы избежать "полотенца" текста - 2й аккаунт что ли завести?)
чтоб был типа этого, как Тень Отца Гамлета.
не полуденная тень какого-то левого служителя культа), а именно Тень. типа биоса.
не дотерпелось дождаться, пока кто-то тиснет:: - ачто делает вашь проект?
====
крупный проект. 3шт.сср. - а ещё 13 из 16ти быстрых вы кому оставили?
понятно, 1ссп на торрент, 1 на виндоуз апдейт(без етово сейчас вообще всё непойми как работает),
1 на ворд или офис, 1 на мессенджер, 1 на бабушкин скайп, 1 надзирает за прерываниями,
2 на личные увлечения(без этого никак), 1 резерв. уже9. +3=12.
ещё как минимум 4шт ccp могли сделать. хм. нужен ещё один линковщик и ©курочка карате®.
....
ТС - вы пишите-пишете. - всем же интересно, как проект сделать?
TimeToWork
4 / 4 / 0
Регистрация: 13.04.2013
Сообщений: 25
15.03.2016, 21:22  [ТС]     Как правильно организовывать проект из нескольких файлов? #3
Не знаю чего тебя так бомбит. И знать не хочу.
FiLF
15.03.2016, 21:26
  #4

Не по теме:

Клоун.

jdzvk
15.03.2016, 23:23     Как правильно организовывать проект из нескольких файлов?
  #5

Не по теме:

-кто?)
*кто Клоун?
1.у ТС есть крупный проект. конкурентный проект, который на полке 2 года пролежав, востребован.
2.ТС пришлось разнести проект на 3 логические части.
3.т.к. он не сформировал очередь - 3 части работают одновременно.
4. у каждой части есть внутренние ресурсы, и "для всеобщего пользования".
=======================
это может быть
(-а-).
(-а1-.)1 блок математики, использующий "сырец", и предоставляющий результаты для сср.2 и сср.3. конкурентно, либо read-only
(-а2-.)1 блок логики, имеющий: "реалтайм-сырец" извне↔вовне, предоставляющий часть собранного материала сср.1&сср.2,
,причём часть сырца может быть туннелированной и шифрованной.
(-а3-.)1 блок пользовательского интерфейса. *не может же такой прojект быть без интерфейса?
визуализация используется "внутренне"), а что-то предоставляется. воздержуcь от гипотез, что.

----------------
(-б-)игра в карты.
(-в-)рисовалка, с каталогизатором графики, с поддержкой сжатых контейнеров.
(-г-)сборник рецептов, как приготовить блюдо "Шоколадница", с визуализацией, и вариантами сервировки.
(-д-) само-обучающаяся улучшалка пакетов картинок.
-что угодно. будильник на каждый день, который включает музыку, и даже самодельный укв-трансмиттер с музыкой.
---------------
и что ТС спрашивал? -как лучше организовать проект из 3х блоков с конкурентным обращением
каждого блока к остальным двум? или что??
====
вы, FiLF, не сердитесь, что так литературно.
ваш ник слегка напомнил московского универа ФилФак. *философски факультет, в простореζии.

*и тут ещё и иерархий нет.

Yandex
Объявления
15.03.2016, 23:23     Как правильно организовывать проект из нескольких файлов?
Ответ Создать тему
Опции темы

Текущее время: 04:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru