|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Написал проект, в котором порядка 100 файлов с различными взаимосвязанными классами. Да, все логично разложено в разные классы без повторов кода и с разделением ответственности. Это привело к тому, что классов и взимосвязей между ними стало много и беглый взгляд на всё это не позволяет уловить основные заложенные идеи. Человеку с улицы разобраться с этим клубком переплетенных ссылок в сотне файлов очень сложно. Как упростить восприятие проекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 11:55 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Бить на модули и библиотеки ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 11:57 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Petro123SeriyK, Бить на модули и библиотеки Все уже разбито, но сильно проще не становится. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:04 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Это общие слова. Надо конкретику. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:08 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKКак упростить восприятие проекта? Попробуй нарисовать UML-диаграмму классов от руки или с графическими средствами. В самом начале рисования у тебя уже скорее всего будут мысли по улучшению. Обычно в самом верху диаграммы должны висеть базовые классы и интерфейсы. Надо постараться подвигать мышкой эти прямоугольнички чтоб они заняли соотв. место вверху. Методов в базовых интерфейсах должно быть немного. В идеале - 1. (ISP) И глубина наследования должна быть не сильно большой. Кода в классах должно быть не сильно много (Single resp.) Вобщем хороший поинт также будет - показать эти диаграмму и код коллегам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:11 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKКак упростить восприятие проекта?открыть для себя doxygen :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:34 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
egorychSeriyKКак упростить восприятие проекта?открыть для себя doxygen :) Вы думаете, что текст документации удобно представляет взаимосвязи объектов? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:38 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKКак упростить восприятие проекта? Вспомнить основы ОО (инкапсуляция) и избавиться от "взаимосвязей". Есть класс, исполняющий нужную функцию и есть его использование в нужных местах. Всё. А если у вас классы переплетаются как черви, то что-то уже неладно в консерватории. Пишите комментарии. Много комментариев. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:41 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSeriyKКак упростить восприятие проекта? Вспомнить основы ОО (инкапсуляция) и избавиться от "взаимосвязей". Есть класс, исполняющий нужную функцию и есть его использование в нужных местах. Всё. А если у вас классы переплетаются как черви, то что-то уже неладно в консерватории. Пишите комментарии. Много комментариев. ООП не забывалось, но при сотне файлов даже с минимальным набором связей получается достаточно сложная структура. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:49 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Главный конструктор обычно в голове все держит)). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:49 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKDimitry Sibiryakovпропущено... Вспомнить основы ОО (инкапсуляция) и избавиться от "взаимосвязей". Есть класс, исполняющий нужную функцию и есть его использование в нужных местах. Всё. А если у вас классы переплетаются как черви, то что-то уже неладно в консерватории. Пишите комментарии. Много комментариев. ООП не забывалось, но при сотне файлов даже с минимальным набором связей получается достаточно сложная структура. Такая? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:54 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKпри сотне файлов даже с минимальным набором связей получается достаточно сложная структура. Поэтому-то её надо упрощать, превращая в иерархию. Низкоуровневые (возможно, абстрактные) классы и высокоуровневые, использующие их. Использование классов, лежащих выше по иерархии, строго запрещено. Если где-то надо закопать банку червей - заставляете высокоуровневый класс реализовать низкоуровневый интерфейс (благо множественное наследование это позволяет). В этом случае для нижележащих такой класс остаётся низкоуровневым. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 12:58 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Вместе класс mainWindow и getValueINI никогда не смотрят. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 13:47 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKВы думаете, что текст документации удобно представляет взаимосвязи объектов?уверен в этом) сам пользуюсь много лет и всем советую. doxygen и UML рисует по коду и ссылки на использование функций другими методами строит. И стимулирует комментарии писать. И даже их читать иногда) P.S. 100 классов в проекте - это фигня ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 14:10 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Я иногда рисовал yed-ом диаграммы классов. 99% вручную. Делал это задумчиво и обычно сочетая разбор какого-то нового неизвестого мне кода (кажется это был поисковый движок для сети аптек) Пример для Apache Lucene приататчил. Не имею ничего против авто-генераторов диаграмм. Но есть определённый смысл в проделывании дизайнерской работы. Например физическая компоновка сущностей рядом может говорить о их родстве (в одном пакете) или о функционале. Среды разработки обычно это не делают и кидают диаграммы как бог даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 15:58 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKКак упростить восприятие проекта? прочитать лучшую книгу по ООП ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 16:46 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKпорядка 100 файлов... если следовать альма-матер учению по ОО от ГрадиБуча, то технология превращения из мысли в код строится на конкретики. Т.е. например бизнес логика должна иметь приблизительно то кол-во сущностей, которым пользуются в жизни люди из жизни в бизнесе. Я например встречал по жизни ну максимум 20-30 сущностей из бизнеса (человек существо конечное)...если добавить различные языковые технологии, области, реализацию и т.п. - то 100-150 классов это очень навёрнутая система должна быть. Либо изначально плохо проведённая декомпозиция задачи. (круглый) ЗЫ Чисто как пример - в исторически сложённом коде было около 1500 сущностей. После проработки бизнес логики - было выявлено около 10-15 классов покрывающих всю бизнес логику. Добавить сюда бд, мультисреадинг, всякие логи-обработки, самописные юаи, сеть, аутпроксерваки и т.п. огород - итого около 100-150.... как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2019, 18:04 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Сейчас выбрал такой путь: разделение проекта на пакеты, которые работают друг с другом только через интерфейсы. Ну и все классы можно разбросать по отдельным пакетам и рассматривать каждый пакет в отдельности (что должно сильно упростить паутину взаимодействия в проекте). Если видите от чего меня надо предостеречь или куда направить, то буду только рад! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 14:27 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKЕсли видите от чего меня надо предостеречь или куда направить, то буду только рад!внимательнее читать форум). Это решение предлагалось в первом вам ответе топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 15:11 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
У меня есть старый, постоянно дополняемый проект, больше 10 лет. Ядро менялось мало, добавлялись новые фичи: система отчётов, система плагинов, система экспорта-импорта... Физически модули одной системы размещаются в отдельных каталогах файловой системы, при разработке строится отдельное тестовое приложение, при этом слежу за тем, чтобы другие подсистемы не использовались. А если все же что-то из дугих подсистем используется - выношу это "что-то" в ядро. Для важных объектов, используемых за пределами подсистемы, делаются отдельные описания интерфейсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 15:52 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKСейчас выбрал такой путь: разделение проекта на пакеты, которые работают друг с другом только через интерфейсы. Ну и все классы можно разбросать по отдельным пакетам и рассматривать каждый пакет в отдельности (что должно сильно упростить паутину взаимодействия в проекте). Если видите от чего меня надо предостеречь или куда направить, то буду только рад! откройте для себя HMVC на примере телефонов: это один для всех отдельный MVC аля микросервис и не надо каждому (клиенты/магазины/банки/итд) свой MVC с телефонами пилить ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 16:09 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKСейчас выбрал такой путь: разделение проекта на пакеты, которые работают друг с другом только через интерфейсы. Ну и все классы можно разбросать по отдельным пакетам и рассматривать каждый пакет в отдельности (что должно сильно упростить паутину взаимодействия в проекте). Если видите от чего меня надо предостеречь или куда направить, то буду только рад!Есть такая штука, как шаблоны проектирования , сейчас очень популярная. Часть из них (шаблон делегирования или мост, например) как раз подходят для решения ваших задач. Попробуйте ознакомится и применить. Дополнительный плюс шаблонов в том, что человек, знакомый с шаблонами, быстрее въезжает в проект, построенный на шаблонах. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 21:26 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Интерфейсы... интерфейсы... почему никто не предложил шаблоны? Там связей вообще нет, и всё статически связано и известно на момент компиляции ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 10:45 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbИнтерфейсы... интерфейсы... почему никто не предложил шаблоны? Там связей вообще нет, и всё статически связано и известно на момент компиляции разве так бывает? Вызовы без связей? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 11:04 |
|
|
start [/forum/topic.php?fid=57&msg=39817672&tid=2017607]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 258ms |
total: | 404ms |
0 / 0 |