powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать проект более структурно понятным?
25 сообщений из 170, страница 1 из 7
Как сделать проект более структурно понятным?
    #39817657
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал проект, в котором порядка 100 файлов с различными взаимосвязанными классами. Да, все логично разложено в разные классы без повторов кода и с разделением ответственности. Это привело к тому, что классов и взимосвязей между ними стало много и беглый взгляд на всё это не позволяет уловить основные заложенные идеи. Человеку с улицы разобраться с этим клубком переплетенных ссылок в сотне файлов очень сложно.

Как упростить восприятие проекта?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817661
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,

Бить на модули и библиотеки
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817666
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123SeriyK,

Бить на модули и библиотеки

Все уже разбито, но сильно проще не становится.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817668
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Это общие слова. Надо конкретику.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817672
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKКак упростить восприятие проекта?
Попробуй нарисовать UML-диаграмму классов от руки или с графическими средствами.

В самом начале рисования у тебя уже скорее всего будут мысли по улучшению.

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

Методов в базовых интерфейсах должно быть немного. В идеале - 1. (ISP)
И глубина наследования должна быть не сильно большой. Кода в классах
должно быть не сильно много (Single resp.)

Вобщем хороший поинт также будет - показать эти диаграмму и код коллегам.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817692
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKКак упростить восприятие проекта?открыть для себя doxygen :)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817695
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorychSeriyKКак упростить восприятие проекта?открыть для себя doxygen :)

Вы думаете, что текст документации удобно представляет взаимосвязи объектов?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817701
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKКак упростить восприятие проекта?

Вспомнить основы ОО (инкапсуляция) и избавиться от "взаимосвязей". Есть класс, исполняющий
нужную функцию и есть его использование в нужных местах. Всё. А если у вас классы
переплетаются как черви, то что-то уже неладно в консерватории. Пишите комментарии. Много
комментариев.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817709
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovSeriyKКак упростить восприятие проекта?

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


ООП не забывалось, но при сотне файлов даже с минимальным набором связей получается достаточно сложная структура.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817710
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главный конструктор обычно в голове все держит)).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817719
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKDimitry Sibiryakovпропущено...

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


ООП не забывалось, но при сотне файлов даже с минимальным набором связей получается достаточно сложная структура.
Такая?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817722
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKпри сотне файлов даже с минимальным набором связей получается достаточно сложная структура.

Поэтому-то её надо упрощать, превращая в иерархию. Низкоуровневые (возможно, абстрактные)
классы и высокоуровневые, использующие их. Использование классов, лежащих выше по
иерархии, строго запрещено.

Если где-то надо закопать банку червей - заставляете высокоуровневый класс реализовать
низкоуровневый интерфейс (благо множественное наследование это позволяет). В этом случае
для нижележащих такой класс остаётся низкоуровневым.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817758
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Вместе класс mainWindow и getValueINI никогда не смотрят.
Удачи!
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817777
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKВы думаете, что текст документации удобно представляет взаимосвязи объектов?уверен в этом) сам пользуюсь много лет и всем советую.
doxygen и UML рисует по коду и ссылки на использование функций другими методами строит. И стимулирует комментарии писать. И даже их читать иногда)

P.S. 100 классов в проекте - это фигня
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817857
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я иногда рисовал yed-ом диаграммы классов. 99% вручную. Делал это задумчиво и обычно сочетая
разбор какого-то нового неизвестого мне кода (кажется это был поисковый движок для сети аптек)

Пример для Apache Lucene приататчил.

Не имею ничего против авто-генераторов диаграмм. Но есть определённый смысл в проделывании
дизайнерской работы. Например физическая компоновка сущностей рядом может говорить о их
родстве (в одном пакете) или о функционале. Среды разработки обычно это не делают
и кидают диаграммы как бог даст.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817908
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKКак упростить восприятие проекта?
прочитать лучшую книгу по ООП
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39817950
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKпорядка 100 файлов...

если следовать альма-матер учению по ОО от ГрадиБуча, то технология превращения из мысли в код строится на конкретики. Т.е. например бизнес логика должна иметь приблизительно то кол-во сущностей, которым пользуются в жизни люди из жизни в бизнесе. Я например встречал по жизни ну максимум 20-30 сущностей из бизнеса (человек существо конечное)...если добавить различные языковые технологии, области, реализацию и т.п. - то 100-150 классов это очень навёрнутая система должна быть. Либо изначально плохо проведённая декомпозиция задачи.

(круглый)
ЗЫ
Чисто как пример - в исторически сложённом коде было около 1500 сущностей. После проработки бизнес логики - было выявлено около 10-15 классов покрывающих всю бизнес логику. Добавить сюда бд, мультисреадинг, всякие логи-обработки, самописные юаи, сеть, аутпроксерваки и т.п. огород - итого около 100-150....
как то так.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818181
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас выбрал такой путь: разделение проекта на пакеты, которые работают друг с другом только через интерфейсы. Ну и все классы можно разбросать по отдельным пакетам и рассматривать каждый пакет в отдельности (что должно сильно упростить паутину взаимодействия в проекте).

Если видите от чего меня надо предостеречь или куда направить, то буду только рад!
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818190
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKЕсли видите от чего меня надо предостеречь или куда направить, то буду только рад!внимательнее читать форум).
Это решение предлагалось в первом вам ответе топика.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818207
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть старый, постоянно дополняемый проект, больше 10 лет.
Ядро менялось мало, добавлялись новые фичи: система отчётов, система плагинов, система экспорта-импорта...
Физически модули одной системы размещаются в отдельных каталогах файловой системы, при разработке строится отдельное тестовое приложение, при этом слежу за тем, чтобы другие подсистемы не использовались. А если все же что-то из дугих подсистем используется - выношу это "что-то" в ядро. Для важных объектов, используемых за пределами подсистемы, делаются отдельные описания интерфейсов.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818211
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKСейчас выбрал такой путь: разделение проекта на пакеты, которые работают друг с другом только через интерфейсы. Ну и все классы можно разбросать по отдельным пакетам и рассматривать каждый пакет в отдельности (что должно сильно упростить паутину взаимодействия в проекте).

Если видите от чего меня надо предостеречь или куда направить, то буду только рад!
откройте для себя HMVC
на примере телефонов: это один для всех отдельный MVC
аля микросервис
и не надо каждому (клиенты/магазины/банки/итд) свой MVC с телефонами пилить
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818263
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKСейчас выбрал такой путь: разделение проекта на пакеты, которые работают друг с другом только через интерфейсы. Ну и все классы можно разбросать по отдельным пакетам и рассматривать каждый пакет в отдельности (что должно сильно упростить паутину взаимодействия в проекте).

Если видите от чего меня надо предостеречь или куда направить, то буду только рад!Есть такая штука, как шаблоны проектирования , сейчас очень популярная. Часть из них (шаблон делегирования или мост, например) как раз подходят для решения ваших задач. Попробуйте ознакомится и применить. Дополнительный плюс шаблонов в том, что человек, знакомый с шаблонами, быстрее въезжает в проект, построенный на шаблонах.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818641
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интерфейсы... интерфейсы... почему никто не предложил шаблоны? Там связей вообще нет, и всё статически связано и известно на момент компиляции
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818647
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbИнтерфейсы... интерфейсы... почему никто не предложил шаблоны? Там связей вообще нет, и всё статически связано и известно на момент компиляции
разве так бывает? Вызовы без связей?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818650
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаблон еще более высокоуровневый чем интерфейс. У него даже названия базовых классов и методов - не регламентированы.
...
Рейтинг: 0 / 0
25 сообщений из 170, страница 1 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать проект более структурно понятным?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]