powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать проект более структурно понятным?
170 сообщений из 170, показаны все 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
Как сделать проект более структурно понятным?
    #39818655
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonШаблон еще более высокоуровневый чем интерфейс. У него даже названия базовых классов и методов - не регламентированы.мммм в других ЯП аналогов нет?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818665
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаблон это вообще не про язык.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818668
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonШаблон это вообще не про язык.вопрос вроде практический. Значит он не применим к сабжу.
Сабж - как из обособленного компонентаА вызвать компонентБ.
Тогда все барахло из 20 классов будет инкапсулировано в черном ящике.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818784
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKКак упростить восприятие проекта?

Да никак.
НАпиши документацию -- это будет лучшее.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818803
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вопрос вроде практический. Значит он не применим к сабжу.Я так понял, дело в связях? Т.е. один класс как-то использует другой класс и поэтому где-то надо писать #include?
Так вот, шаблон не требует к своим шаблонным параметрам include. У меня есть упоротый проект исключительно на шаблонах, там все include только в одном месте: где идёт объявление всех объектов. Не, я, конечно, лукавлю, на счёт "в одном месте", но все архитектурные вещи друг от друга никак не зависят, они потом в одном месте друг другу в качестве шаблонных параметров передаются.
К примеру, у меня есть класс CMetric (это шаблон), который используется всеми другими объектами, так как метрика. И всего 2 include, один в app.cpp, потому что там описание, один в project.cpp, потому он всё это запускает (скорее всего можно от второго избавиться). И эта метрика на вход получает тип данных, и единицу измерения - один раз в коде(и это app.h). По-моему, очень удобно и просто.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818923
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
страус очень топит за шаблоны и старательно внедряет в новых версиях C++
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818925
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется топик пошел не туда. Здесь имелось 21893948 в виду шаблоны проектирования а не шаблоны функций.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818960
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

т.е. что бы уменьшить количество классов, нужно перевести их в шаблоны :-)?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39818978
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)CEMb,
т.е. что бы уменьшить количество классов, нужно перевести их в шаблоны :-)?При применении шаблонов число классов вырастет, зато их связность можно уменьшить.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819011
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKНаписал проект, в котором порядка 100 файлов с различными взаимосвязанными классами. Да, все логично разложено в разные классы без повторов кода и с разделением ответственности. Это привело к тому, что классов и взимосвязей между ними стало много и беглый взгляд на всё это не позволяет уловить основные заложенные идеи. Человеку с улицы разобраться с этим клубком переплетенных ссылок в сотне файлов очень сложно.

Как упростить восприятие проекта?

Количество классов и возможность стороннему разработчику уловить основные идеи коррелируют слабо. Ваша диграмма классов, даже если у вас идеальная архитектура(а такого не бывает) будет скорее запутывать, если вы попытаетесь уместить на ней все и кому-то показать. Да и не интересно, у разработчика сейчас немало вспомогательных средств чтобы понять, как устроен ваш проект. Единственное, что я могу посоветовать, так это назвать ваши сущности коррекно, и, как ни странно, не стесняйтесь комментировать свой код.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819014
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор пишет про восприятие.

А что такое это вообще? Восприятие. Это как он сам воспринимает свой проект.

Рискну предположить что восприятие плохое когда код просто плохой или содержит
много внутренних противоречий. Или как говорит мой коллега .. код содержит "договорняк"
которые не очевиден.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819015
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее интересно, что делает каждый конкретный модуль/сервис, и как и с кем он обменивается сообщениями. Т.е. скорее потоки данных
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819016
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом у него 100 файлов. По современным меркам - это маленький проект.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819055
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)т.е. что бы уменьшить количество классов, нужно перевести их в шаблоны :-)?чтобы уменьшить число классов, надо уменьшить число классов, но я думаю, проблема не в числе классов у автора.
bk0010При применении шаблонов число классов вырастет, зато их связность можно уменьшить.да и число классов не обязательно вырастет.

автор не раскрыл тему структуры проекта. Обычно, все классы можно разделить на тематики. Я сейчас открыл свой последний проект, ему полгода, там оказалось около сотни файлов (я думал, штук 50...), у меня всё разбито по папкам на тематики. В корне только 2 файла, проект.cpp (это то, что студия сгенерила, проект Win32 использую для запуска) и app.cpp. (ну и хедеры, плюс stdafx-и и почему-то resource.h). Всё остальное лежит по папкам:

Классы и интерфейсы для окон. 3.
Улилиты. 9. Названия чётко показывают, кто с чем работает.
Структурные данные. 9. Тоже всё ясно из имён.
Работа с настройками. 4.
Метаданные. 4
Графика. 3
Классы для MDI, 9
UI, диалоги, 21
База данных, 6
Парсер кода, 1
(умножаем всё на два, h и cpp)

Структуру самого приложения это нагляднее не делает, но зато легко позволяет найти нужные вещи, они всё на своих местах. И это мне позволяет легко работать с самой архитектурой проекта. Я это всё к тому написал, что автор не раскрыл тему структуры своего проекта, может у него просто всё в куче... если разложить по папкам, всё становится куда нагляднее.

С другой стороны, бывают вещи сложные, как их не раскладывай. "Нейрохирургия мозга для чайников" не бывает. Некоторые вещи просто надо мочь держать в голове.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819070
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,
+1
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819106
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

+1

умножать на два не надо. имхо - подсчитываются сущности-классы...
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39819576
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0умножать на два не надо. имхо - подсчитываются сущности-классы...ну там автор про файлы говорил, поэтому я написал в файлах.
Но вообще да, по нормальному, число файлов должно соответствовать числу классов * 2. Но вот у меня не так, у меня в одном заголовке может быть 1-2 класса, потому что иногда лень выносить в отдельный файл, поэтому у меня в проекте число файлов примерно соответствует числу классов (~100 тоже)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820232
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь в Eclipse поставить плагин для UML:

Papyrus- удачно установился, появилась перспектива, но на диаграммах не меняется черный цвет стрелок, поэтому при цветовой схеме Dark связей практически не видно.

UML Designer - установил сборку eclipse-modeling-2019-03 (в которой по логике этот продукт присутствует) и теперь абсолютно не понятно как достучаться до этого инструмента: такой перспективы нет, проекты такого типа создать нельзя, в справке откровенная хрень как добавлять элементы в список, а не на диаграмму, интернет молчит.

Visual Paradigm- на сайте есть только exe- дистрибутивы для Windows (что мне не подходит).

ObjectAid- только визуализирует уже написанный Java- код, при этом не позволяет заниматься предварительным моделированием.

PlantUML- установил их плагин с помощью инфы с их сайта ( http://plantuml.com/ru/eclipse), но как пользоваться этим шедевром- абсолютно не понятно (нет ни новой перспективы, ни нового шаблона проекта).

Кто- нибудь пробовал работать с UML в Eclipse?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820238
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного соврал про UML Designer: появилась перспектива Sirius (чтоб никто не догадался!) и типы проектов Modeling Project и Ecore Modeling Project , при создании которых я не вижу области для построения диаграмм и соотвествующей панели инструментов (для наполнения диаграммы).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820274
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал разные способы установки UML Designer с их сайта и всегда получаю ошибку (Sirius 6.1.2 из Marketplace успешно установлен):
авторCannot complete the install because one or more required items could not be found. Software being installed: UML Designer 9.0.0.201901300933 (org.obeonetwork.dsl.uml2.runtime.feature.feature.group 9.0.0.201901300933) Missing requirement: UML Designer 9

Пробовал варианты:
1. Kubuntu 19/04 и OpenSuse
2. Три версии 9.0, 8.1 и 8.0
3. Разные сборки Eclipse: Eclipse IDE for Enterprise Java Developers и Eclipse Modeling Tools

Постоянно при установке вываливается эта ошибка. Короче, какая- то хрень с этим UML Designer.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820349
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В борьбе за UML Designer решил, что у меня Java плохая :) Снес текущую Java и натянул Oracle Java.

Ошибка продолжает появляться. Думаю с UML Designer надо попрощаться.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820368
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,

плюнь ты на этот Eclipse, в нём постоянно что-то отваливается
KDevelop рекомендую
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820501
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKНаписал проект, в котором порядка 100 файлов с различными взаимосвязанными классами.
Как упростить восприятие проекта?

Это мелкий проект.
У нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.

Да, даже опытный разработчик входил в курс даже части проекта за 3-6 месяцев.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKВ борьбе за UML Designer решил, что у меня Java плохая :) Снес текущую Java и натянул Oracle Java.

Ошибка продолжает появляться. Думаю с UML Designer надо попрощаться.
Поражают твои злоключения.

И что значит снёс. Поставил.

Поставь две. Сконфигурируй так чтобы каждое приложение видело свой JRE.

Тыж программист едрить тебя налево....!
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820523
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LepsikУ нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.Если не секрет, что это было? Просто интересно, получается, в функции 10К строк уникального, неповторяющегося кода.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820553
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кодогенерация?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820559
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожет кодогенерация?
Если кодогенерация - то какой смысл новичкам изучать исходники по три месяца? Тут следует изучать метаданные и механизмы генерации.
...
...и все равно, метод размером в 10 тысяч строк - это за пределами.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820570
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbLepsikУ нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.Если не секрет, что это было? Просто интересно, получается, в функции 10К строк уникального, неповторяющегося кода.более интересно сколько это всё собиралось
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820628
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге самым простым и самым удобным оказался пакет Modeling из Qt Creator . Единственный минус- в одной модели может содераться несколько холстов (например, для разных диаграмм), а элементы в дереве не комбинируются по холстам (свалены в общую кучу). Т.е. надо выбрать одно из двух:
1. Под каждую диаграмму создавать свою модель (которая хранится в отдельном файле и потому надо иметь "хоровод" файлов, каждый из которых открывать / закрывать отдельно).
2. В дереве элементов иметь все 100500 элементов общим списком в алфавитном порядке. А ведь вся "петрушка" затевалась, чтобы разделить проект на отдельные независимые подсистемы...
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820635
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK А ведь вся "петрушка" затевалась, чтобы разделить проект на отдельные независимые подсистемы...
Прочитал тему.
Тут все вроде видят совсем другую цель.
Выше писалось про восприятие. То есть чтобы вы просо поняли проект.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820689
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpПрочитал тему.
Тут все вроде видят совсем другую цель.
Выше писалось про восприятие. То есть чтобы вы просо поняли проект.

По- моему восприятие увеличится, если проект разбить на десяток независимых подсистем, в кажой из которых всего по 10 классов (часть из которых просто вспомогательные).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820693
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKPetroNotC SharpПрочитал тему.
Тут все вроде видят совсем другую цель.
Выше писалось про восприятие. То есть чтобы вы просо поняли проект.

По- моему восприятие увеличится, если проект разбить на десяток независимых подсистем, в кажой из которых всего по 10 классов (часть из которых просто вспомогательные).
Дак так никто не бъет на куски. Это максимализм.
И "восприятие увеличится" не тот термин.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820700
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выяснил, что если в Qt Creator создать проект (я использовал Qt Widgets Application), то файлы диаграмм автоматически добавляются к этому проекту и не надо руками поддерживать их расположение. В этом случае в дереве файлов представлены отдельные диаграммы (что очень удобно!), у каждой из которых я создаю по 1 холсту, и поэтому все элементы в дереве принадлежат этому холсту (что тоже очень удобно!).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёmaytonМожет кодогенерация?
Если кодогенерация - то какой смысл новичкам изучать исходники по три месяца? Тут следует изучать метаданные и механизмы генерации.
...
...и все равно, метод размером в 10 тысяч строк - это за пределами.
Возможно следовало сделать ревизию типа code-coverage и посмотреть
где бизнесу код нужен а где нет.

Да я сильно сомневаюсь что человеческий мозг вообще в состоянии охватить это.
Проблема еще в том что очень крупные проекты каждый день накатывают по десятку
пул-реквестов. Вам мало осознать весь код. Надо еще быть familiar по отношению
к текущим актуальным задачам и изменениям.

Здесь без модуляризации и строгого разделения на команды разработки никак не обойтись.
Я так думаю.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820728
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
В этой IDE. в отличии от студии нет в меню - создать папку.
Поэтому вам там сложнее.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820746
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonВозможно следовало сделать ревизию типа code-coverage и посмотреть
где бизнесу код нужен а где нет.
...

Расслабьтесь: это был адский гон :)
40 Gb исходников :) Для этого надо чтобы вся планета Земля трудилась также продуктивно, как Лев Толстой несколько тысячелетий :)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820747
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
В этой IDE. в отличии от студии нет в меню - создать папку.
Поэтому вам там сложнее.

В Qt Creator можно в файловой системе создать папку и система ее отразит в дереве, потом прямо в Qt Creator можно перенести все что нужно в эту папку.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820748
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Тут был совет разбить по папкам и даже названия были даны. Отличный совет. Берете и делаете.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820751
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Я в курсе что руками можно. Возни больше.
Мне тоже раскидывать позднее.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820756
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой гон? Посмотрите в гитхабе. Там крупные проекты по 100Мб сорцов. Тоесть до 40Гб нам надо просто
взять 400 проектов. Это уровень крупного предприятия.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39820996
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LepsikSeriyKНаписал проект, в котором порядка 100 файлов с различными взаимосвязанными классами.
Как упростить восприятие проекта?

Это мелкий проект.
У нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.

Да, даже опытный разработчик входил в курс даже части проекта за 3-6 месяцев.
походу это яркий пример незнания ООП
дублирование кода можно и на сотни гб растянуть при желании
а ф-и по 10к строк это вообще что-то адски неправильное
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821000
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухLepsikпропущено...


Это мелкий проект.
У нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.

Да, даже опытный разработчик входил в курс даже части проекта за 3-6 месяцев.
походу это яркий пример незнания ООП
дублирование кода можно и на сотни гб растянуть при желании
а ф-и по 10к строк это вообще что-то адски неправильное
Это всё комменты
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821083
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
полудухпоходу это яркий пример незнания ООП
дублирование кода можно и на сотни гб растянуть при желании
а ф-и по 10к строк это вообще что-то адски неправильное

Ну что вы верите в откровенную ерунду. Функция на 200 листов А4 :)
Если исходики 40 ГБ, то собранное ПО будет весить террабайт :) Вы сами хоть раз встречали такие программы в своей жизни?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821099
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция на 200 Листов А4. Хм... Можно даже в символах примерно прикинуть сколько это.

Хм.. Эти Роберты Мартины и Фаулеры щас поперхнулись чашкой кофе.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821192
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKполудухпоходу это яркий пример незнания ООП
дублирование кода можно и на сотни гб растянуть при желании
а ф-и по 10к строк это вообще что-то адски неправильное

Ну что вы верите в откровенную ерунду. Функция на 200 листов А4 :)
Если исходики 40 ГБ, то собранное ПО будет весить террабайт :) Вы сами хоть раз встречали такие программы в своей жизни?
Маргарет Гамильтон и её код для "Аполлона-11"


зы: терабайт
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821197
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,
)) в Мире все можно найти, если это кому нибудь нужно.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821219
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, а ещё в мире очень сложно найти слово "невозможно"
я нашёл всего 2
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821449
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухМаргарет Гамильтон и её код для "Аполлона-11"Надо внутрь смотреть. (как и во всех случаях)
Может, Маргарет не знала про такую штуку, как функции? Не, ну, мало ли, да? Я когда маленький был, я тоже столько кода писал. У меня откуда-то были рулоны туалетной бумаги для принтеров, что способствовало. Потом немного вырос и понял, что не в количестве пирогов счастье.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821628
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вроде всё ок с ф-ями в NASA

я тут уже не раз приводил их 10 правил , как сопровождать миллионы строк кода и не сойти с ума
( оригинал )
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821630
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правда вот незнание ООП я всё таки допускаю
давно это было... да и женский C++ полон сюрпризов
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821631
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее тогда это был ещё C
т.е. никакого ООП в помине не было
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821650
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbполудухМаргарет Гамильтон и её код для "Аполлона-11"Надо внутрь смотреть. (как и во всех случаях)
Может, Маргарет не знала про такую штуку, как функции? Не, ну, мало ли, да? Я когда маленький был, я тоже столько кода писал. У меня откуда-то были рулоны туалетной бумаги для принтеров, что способствовало. Потом немного вырос и понял, что не в количестве пирогов счастье.
Для ассемблеров это нормально. Вспомните как сорс выглядел. Мнемоника. Операнды. И ENTER.
А бумага была для прочтения. Ибо персоналок не было. Машинное время было ограничено.
А тут сиди себе. Читай. С чашкой кофе.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821721
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
полудухSeriyKпропущено...


Ну что вы верите в откровенную ерунду. Функция на 200 листов А4 :)
Если исходики 40 ГБ, то собранное ПО будет весить террабайт :) Вы сами хоть раз встречали такие программы в своей жизни?
Маргарет Гамильтон и её код для "Аполлона-11"


зы: терабайт

Если читывать как бабы из мухи раздувают слона, можно предположить, что в этих книжках программа "Hello, world!" :)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821823
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbLepsikУ нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.Если не секрет, что это было? Просто интересно, получается, в функции 10К строк уникального, неповторяющегося кода.

Blackberry Server.

Это был тело main thread. загрузка конфигурации, тестирования среды, запуски рабочих тредов.

Собиралось 4 часа на довольно приличной билд машине в 2011 году.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821832
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot полудух]Lepsikпропущено...
дублирование кода можно и на сотни гб растянуть при желании
а ф-и по 10к строк это вообще что-то адски неправильное

Таки да 1 Гиг был кодогенерирован.

И это же не один сервис, их масса, кода под MSSQL и Db2, поддержка 4 почтовых систем (MSExchanage, Lotus Domino, Novell, ...). Частично дублировался код для почтовых сервисов.
Но кодовую базу совместить было невозможно ввиду специфики этих систем.

Конечно там и утилиты и библиотеки и фрэмворки и прочая-прочая.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821900
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, есть ли какая-то метрика типа тысяч-миллионов-строк-на-человека при которой
- развитие ПО останавливается
- выделяется строгая фаза поддержки и небольших доработок
- выделяется вечный неубываемый технический долг который уже невозможно погасить имеющимися
ресурсами
- теряется экспертиза. Знающие уходят с проекта (по разным причинам).
- newcomers не разбираются во всём. Лишь могут охватить какие-то части или модули.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821916
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Только экспертный метод. Эксперт - человек).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39821939
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухда вроде всё ок с ф-ями в NASA

я тут уже не раз приводил их 10 правил , как сопровождать миллионы строк кода и не сойти с ума
( оригинал )
авторУказатели на функции запрещены.

Ну ё.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822040
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухя тут уже не раз приводил их 10 правил ,Спасибо, интересный мануал. Обнаружил, что некоторые правила выполняю уже на автомате, такие как проверки параметров-результатов и минимум указателей. Некоторые пункты сложно соблюдать, например отсутствие динамического выделения памяти, когда у тебя много зачитывается всякой конфигурации и прочего. Сюда же попадают ограничения на циклы.
Но:полудухкак сопровождать миллионы строк кода и не сойти с умаэто немного перпендикулярно. Точнее, Power of 10 это необходимо, но недостаточно, говоря математически.

полудухда и женский C++ полон сюрпризов
Что имеется ввиду?
Почему-то вспомнилась Алёна С++, но её код я не видел.

maytonДля ассемблеров это нормально. Вспомните как сорс выглядел. Мнемоника. Операнды. И ENTER.
А бумага была для прочтения. Ибо персоналок не было. Машинное время было ограничено.Ну я был не настолько маленький, я на бейсике писал, а так, да, персоналок и времени на них не было много, поэтому бумага.
LepsikЭто был тело main thread. загрузка конфигурации, тестирования среды, запуски рабочих тредов.а в процентном соотношении можно примерно прикинуть, сколько кода на что ушло?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822123
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbполудухя тут уже не раз приводил их 10 правил ,Спасибо, интересный мануал. Обнаружил, что некоторые правила выполняю уже на автомате, такие как проверки параметров-результатов и минимум указателей. Некоторые пункты сложно соблюдать, например отсутствие динамического выделения памяти, когда у тебя много зачитывается всякой конфигурации и прочего. Сюда же попадают ограничения на циклы.
Эти требования подходят для аэрокосмоса. Но для обычной бизнес-разработки их соблюсти очень сложно.
Например требование - не использовать прямую или косвенную рекурсию . У нас - много рекурсии
в поисковых алгоритмах и везде где есть процессинг XML/JSON или каких-то древовидных бизнес-объектах.

Требование - Весь код должен компилироваться при всех включенных warning'ах .

Возможно это реально соблюсти на С. Но в других языках в счет их естесвтенной бурной эволюции
не получать никаких варнингов - это либо сложно либо невыполнимо в силу ситуации.

Требование Не использовать динамическое распределение памяти после инициализации. .
Я-бы обсудил. Сначала для С. А потом попробовал-бы обобщить. Если получится.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822125
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по делу: по Мартину разделил свою программу на концентрические круги. Слой "Шлюзы, контроллеры, представления" отделяет от остальной программы в том числе реализацию внешних интерфейсов.

Вопрос: что писать в этом слое для того, чтобы программа взаимодействовала с Qt- интерфейсом? В этом вопросе указанный слой вырождается в "пробрасывание вызовов" (с помощью класса- реализации, интерфейса и фабрики) от внтуреннего слоя "Сценарии" к внешнему слою с фреймворком Qt.

Если для доступа к БД в этом слое находится SQL- код, как способ получения данных из любой sql- подобной базы данных, то в вопросе интерфейса этот слой выглядит очень смешно.

Может при рассмотрении интерфейса, основанного на Qt, я не вижу какой- то части кода, которую для защиты надо вынести в промежуточный слой?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822158
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Все проще.
Делить надо сначала по крупному - по функционалу.
А потом в каждом куске можно уже по Мартину.
Пример 1С: модуль Кадры, модуль ТорговляИСклад и т.д.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822161
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Для доступа к бд обычно ОРМ или рукописный паттерн репозиторий.
А можно и dll DAO.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822168
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKВопрос по делу: по Мартину разделил свою программу на концентрические круги. Слой "Шлюзы, контроллеры, представления" отделяет от остальной программы в том числе реализацию внешних интерфейсов.

Ссылка интересная. Спасибо. Почитаем.

Круги никогда не применял. Но есть сомнения что в любой задаче мы можем выделить например "шлюзы".
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822246
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
Все проще.
Делить надо сначала по крупному - по функционалу.
А потом в каждом куске можно уже по Мартину.
Пример 1С: модуль Кадры, модуль ТорговляИСклад и т.д.

"По крупному" программа уже поделена: я ведь не просто так спрашиваю конкретно об интерфейсе. В этом направлении у меня произошло вырождение одного из слоев (поэтому закралось подозрение, что я что- то в этом направлении не замечаю).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822254
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonСсылка интересная. Спасибо. Почитаем.

Круги никогда не применял. Но есть сомнения что в любой задаче мы можем выделить например "шлюзы".

Эта статья- краткая выжимка книги Роберта Мартина "Чистая архитектура. Искусство разработки программного обеспечения" (2018 год)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822266
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
ОК.
В Qt есть ГУИ не на виджетах, а на Quick.
Во втором случае там Модель и свои законы.
У тебя какой вариант?
Хотя я Quick не люблю и у меня виджеты.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822270
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
ОК.
В Qt есть ГУИ не на виджетах, а на Quick.
Во втором случае там Модель и свои законы.
У тебя какой вариант?
Хотя я Quick не люблю и у меня виджеты.

У меня простенькие формы (заголовок, три кнопки и текстовое поле для отображения хода работы) на виджетах.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822273
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbполудухда и женский C++ полон сюрпризов
Что имеется ввиду?
Почему-то вспомнилась Алёна С++, но её код я не видел.
то что в программировании крайне важно внимание к мелочам и скрупулёзность
усидчивость и терпение (чтобы найти баг, например)
а также недюжая мотивация к обучению
у женщин же чаще в голове ветер и меньше ответственности
"женщина может позволить себе быть ветренной, мужчина - нет" (с) крёстный отец

maytonCEMbпропущено...
Спасибо, интересный мануал. Обнаружил, что некоторые правила выполняю уже на автомате, такие как проверки параметров-результатов и минимум указателей. Некоторые пункты сложно соблюдать, например отсутствие динамического выделения памяти, когда у тебя много зачитывается всякой конфигурации и прочего. Сюда же попадают ограничения на циклы.
Эти требования подходят для аэрокосмоса. Но для обычной бизнес-разработки их соблюсти очень сложно.
Например требование - не использовать прямую или косвенную рекурсию . У нас - много рекурсии
в поисковых алгоритмах и везде где есть процессинг XML/JSON или каких-то древовидных бизнес-объектах.

Требование - Весь код должен компилироваться при всех включенных warning'ах .

Возможно это реально соблюсти на С. Но в других языках в счет их естесвтенной бурной эволюции
не получать никаких варнингов - это либо сложно либо невыполнимо в силу ситуации.

Требование Не использовать динамическое распределение памяти после инициализации. .
Я-бы обсудил. Сначала для С. А потом попробовал-бы обобщить. Если получится.
ну мне лично больше понравилась книжка про "выстрелить в ногу", там полней и ценней правила
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822276
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и современней
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822281
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKPetroNotC SharpSeriyK,
ОК.
В Qt есть ГУИ не на виджетах, а на Quick.
Во втором случае там Модель и свои законы.
У тебя какой вариант?
Хотя я Quick не люблю и у меня виджеты.

У меня простенькие формы (заголовок, три кнопки и текстовое поле для отображения хода работы) на виджетах.
На простой можно ничего не делить.
Если для обучения, то
...
Твой круг Контроллеры вполне перекликается с MVC или MVVP.
Тогда файл.ui и его h, cpp это View.
ViewModel это класс myFormViewModel.
Он отображает состояние ГУИ.
Во вью состояния нет.
Вот этого класса тебе не хватает.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822423
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять вопросик: чтобы максимально разделить код по подсистемам решил использовать систему сигналов (а то у меня прямо в GUI- формах создавался новый поток и в нем запускалась обработка, что превращало код в лапшу). В правильном ли направлении я двигаюсь? Если да, то можете посоветовать книгу / статью на тему применения сигналов с точки зрения архитектуры приложения (чтобы не переизобрести велосипед с квадратными колесами)?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822471
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Два постулата имхо:
- потоки редко нужны, т.к. само ГУИ однопоточно.
- как выше сказано, не пишите ничего в VIEW. Там у вас класс как член поля. Вот туда все и передавайте.
Зачем сигналами?
Можно так
myFormViewModel.clickButtonDelete(....)
Как угодно можно назвать.
Сигналы это события которых нет в плюсах). Так вроде).
Имхо.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822474
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
Два постулата имхо:
- потоки редко нужны, т.к. само ГУИ однопоточно.
- как выше сказано, не пишите ничего в VIEW. Там у вас класс как член поля. Вот туда все и передавайте.
Зачем сигналами?
Можно так
myFormViewModel.clickButtonDelete(....)
Как угодно можно назвать.
Сигналы это события которых нет в плюсах). Так вроде).
Имхо.

Потоки ОЧЕНЬ нужны, иначе интерфейс будет виснуть до окончания обработки, а сама обработка будет происходить в один поток.

myFormViewModel.clickButtonDelete(....) - ужасное решение, которе делает зависимым модуль формы от модуля с потоком. А это две СОВЕРШЕННО РАЗНЫЕ сущности, которые должны жить абсолютно ничего не зная друг о друге.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822489
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Ну, если ожидание более 10 сек например, и курсор песоч.часы не устраивают, то можно и потоки.
Тогда мне нравится подход MS в шарпе.
Метод поточный всегда обозначен await.
Можно так
Код: plaintext
1.
myFormViewModel.clickButtonDeleteAwait(....)



Тогда управление сразу вернется в ГУИ. Заморозки не будет.
Вот тут можно подписаться на событие окончания функции.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822493
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Во первых, у каждого VIEW свой контроллер. То есть они всегда зависимы.
Во вторых, ты можешь добавить интерфейс и связать через него.
...
Минус сигналов и слотов, то что я сегодня случайно перенес функцию из паблик в привате.
И крындец. Молча и не сообщая функция не вызывалась.
Никаких хинтов компилятора и райзе в рантайм.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822499
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Ты главное найди границу слабосвязанных объектов и оверхед.
Она есть. И можно нагородить опять 100 слабосвязанных классов.
У которых "меню-найди использование метода под курсором" ничего не покажет.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822594
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKПотоки ОЧЕНЬ нужныPetroNotC SharpТогда мне нравится подход MS в шарпе.Да, вот у меня была похожая ситуация. Я тут обнаружил такую приятную штуку в плюсах.
в <future> есть async, который позволяет в потоке запустить любую функцию или метод класса, форварднув в него нужные параметры. Немного напомнило acync/await, не совсем конечно, но тоже довольно удобно тем, что не надо создавать отдельную функцию для потока и прокидывать туда параметры, написал в одну строчку и забыл. Мне кучу времени и места в коде сэкономило.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822596
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,
Да.
В MS они настолько пул потоков спрятали, что даже оторопь берет.
Никаких Thread создавать не нужно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
.... 
... 
await function_async();
//сюда ВЕРНЕТСЯ КОД КОГДА БУДЕТ ВЫПОЛНЕНА В ФОНЕ function_async() 
... 
.... 
MessageBox(. Все выполнено. 
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822666
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для передачи информации о том, какие клавиши нажал пользователь решил использовать паттерн "Наблюдатель" . По логике интерфейс Observer как раз отлично ложится в более верхний уровень (от него все зависят) и по одной "ветке" получает события, а по второй- "спускает" конкретную задачу непосредственному исполнителю.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822678
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
А зачем это в Qt?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822747
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
А зачем это в Qt?

Вы за нитью беседы следите? По совету форумчан я решил разделить программу на независимые подсистемы, выстроив многоуровневую архитектуру. Qt- фреймворк, т.е. низкоуровневая деталь (возможно с течением времени этот фреймворк будет заменен). Поэтому от Qt этот вопрос совершенно не зависит.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822785
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Слежу.
Передача клавиши это слишком мелко для передачи между крупными модулями.
За мыслью следите?
Можно крупнее - паттерн Команда.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822845
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
Слежу.
Передача клавиши это слишком мелко для передачи между крупными модулями.
За мыслью следите?
Можно крупнее - паттерн Команда.

Спасибо, но для простого запуска обработки "Наблюдателя" вполне достаточно, при этом он значительно проще.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822938
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может на пару дней прикрыть топик?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39822941
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Имхо. Если автор не спрашивает, то тут никто не пишет.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825056
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, пожалуйста, подскажите решение:

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

Проблема в том, что получение из инета может быть с ошибкой и надо как- то из второй подсистемы сообщить первой о необходимости повтора запроса. И тут они становятся зависимыми друг от друга!

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

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

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

Если ошибка произошла при получении, то как дело вообще дошло до второй подсистемы?

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

Есть две независимые подсистемы: одна выполняет запрос в инет, другая выполняет в цикле ЛЮБОЕ действие до получения результата (ее задача- добиться результата в ненадежной ситуации). В цикле как раз и крутится выполнение запроса в инет и потому нет ничего удивительного, что при получении ошибки в подсистеме работы с интернетом об этом известно в первую очередь.

Dimitry SibiryakovПо мне так: первая система принимает запрос (полностью) и посылает второй подсистеме
задание "вот запрос, выполни, ответ засунь в эту дырочку (сокет)". Все, первая система
больше не при делах. Вторая выполняет запрос и засовывает либо его результат, либо отлуп в
указанную дырочку.


Если возвращать "отлуп", то о нем надо ДОГОВОРИТЬСЯ обеим подсистемам: повторить запрос / пропустить эти данные (они не получаемы в принципе) / надо немного подождать и повторить запрос (превышен лимит сервера)? Т.е. появляется зависимость между двумя подсистемами, которые по логике независимы друг от друга.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825096
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKДОГОВОРИТЬСЯпридется договариваться.
Ошибки делят на уровни. Фатальная, варнинг, и т.д.
Далее, главная система должна точно задать количество повторов после которых считается что запрос неу пешен и его не будет. Ресурс в дауне.
Не бывает абсолютной независимости.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825097
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,

Термин "черный ящик" учили?
У него есть вход и выход.
У вас 2 ящика. Как считаете, они зависимы?))
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825101
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть другой вариант архитектуры - реактивное программирование.
Но не думаю что вы готовы и в данном ЯП есть средства для этого.
Там система для веб главная. Остальные ждут от неё стрим с данными. Покс стрима нет в остальных ничего не происходит.
Поток данных из веб - двигатель всего остального.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825102
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpНе бывает абсолютной независимости.

Разумеется зависимость будет, но есть разные способы внедрения зависимостей: через интерфейс, через общий "над-уровнь", глобальные переменные....

Мне хочется найти самую слабую зависимость.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825104
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKсамую слабую зависимость.цель оправдывает средства? Или наоборот?
А если вместо 100 будет 200 классов?
Устроит?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825105
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Ну и вы путаете связи и бизнес логику (БЛ).
"если запрос не выполнится в течении 15 сек, то задействовать модуль #5 - это бизнес логика описываемая в ТЗ от заказчика.
Как вы это выполните со слабой связанностью?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825108
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKЕсть две независимые подсистемы: одна выполняет запрос в инет, другая выполняет в цикле ЛЮБОЕ действие до получения результатавыше говорил, что делят независимые по островам Функциональности.
Там легче делить.
А ты разрезал по живому - там где запросОтвет.
Удачи!
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825109
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKМне хочется найти самую слабую зависимость.

Самая слабая зависимость - при общении через очередь. Какой-нибудь ZeroMQ позволит вообще
эти подсистемы разнести по разным серверам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825112
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Да.
Шина еще есть.
Можно послать запрос так далеко, что ответ будет никому не нужен))
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825183
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpА ты разрезал по живому - там где запросОтвет.
Удачи!

Получается, что выделение универсального функционала (в моем случае это подсистема гарантированного выполнения переданной функции) противоречит модульности системы? И если у меня в нескольких местах необходимо использовать один и тот же универсальный функционал, то во всех этих местах его надо дублировать?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825185
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovСамая слабая зависимость - при общении через очередь. Какой-нибудь ZeroMQ позволит вообще
эти подсистемы разнести по разным серверам.


Вопрос не в способе доставки, а во взаимо- понимании (договоренности) двух подсистем. Повторюсь, что могу без лишних объектов (таких как очередь) бросить исключение, и оно само поднимется выше по стеку и передаст информацию о произошедшем. Вопрос в том, чтобы выше по стеку поняли как себя вести в этой ситуации. Возможно одно из двух:
1. Ниже по стеку должны знать потенциальные варианты действий подсистемы, находящейся выше по стеку (и подготавливали данные исходя из этого, сообщая об ошибке).
2. Выше по стеку умели интерпретировать результаты того, что происходит ниже.

Введение промежуточного объекта ("переводчика" с языка одной подсистемы на язык другой) не изменит ситуацию, поскольку зависимость будет существовать через него.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825187
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKв моем случае это подсистема гарантированного выполнения переданной функциивы правильно делаете что ищите Повторяемы код или функционал.
Я не пойму что это такое выше вы назвали.
На первый взгляд это слишком мелко.
Вы бы код показали.
- легаси проект или новый?
- просто класс выделить подходит?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825195
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKпереводчика" с языка одной подсистемы на язык другой)посмотрите вокруг себя. Все уже изобретено.
В веб таким переводчиком является код возврата Http.error. Это просто перечислимое.
Но это гетерогенные среды!
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825196
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKгарантированного выполнения переданной функциикак корабль назовешь, так он и поплывёт)))
Юмор люблю.
..
Названия подмодулей должен понимать заказчик не программист.
Измените название чтобы записать в ТЗ и его понимали.
То есть опять таки функционал!
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825198
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK1. Ниже по стеку должны знать потенциальные варианты действий подсистемы, находящейся выше по стеку (и подготавливали данные исходя из этого, сообщая об ошибке).при http.error это нет.
Внизу тупо передают код 404 по факту.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825212
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKПроблема в том, что получение из инета может быть с ошибкой и надо как- то из второй подсистемы сообщить первой о необходимости повтора запроса. И тут они становятся зависимыми друг от друга!Я бы сделал так (мы недавно делали похожую систему, правда я потом отошёл от дел, поэтому точность не гарантирую):
- 2 очереди, одна с командами, вторая с ответами (у нас даже очередь с командами разбирали несколько исполнителей).
- обе очереди - это отдельные подсистемы, с API, которые по вводимым данным формируют у себя объект в своём формате. Т.е. если это ошибка, ты можешь установить через отдельный метод код ошибки, если надо ещё сообщение - через отдельный метод сообщение. И так далее. Тоже самое с командной очередью: свой объект, своё API.
- оба API делаются по необходимому минимуму.
- ни принимающая, ни обрабатывающая системы друг о друге не знают. Они так же не знают формат объектов в очередях, у них просто есть несколько функций, через которые они могут устанавливать/читать информацию о событии/команде.

кейс:SeriyKполучение из инета может быть с ошибкой- вторая система создаёт в очереди сообщений объект сообщения, передаёт в него код и текст.
- первая разгребает очередь, получает информацию об ошибке
- первая создаёт объект в очереди команд на повторное выполнение запроса.

скорее всего, есть какой-нибудь паттерн про это, но я в их названиях плохо разбираюсь
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825215
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMbSeriyKПроблема в том, что получение из инета может быть с ошибкой и надо как- то из второй подсистемы сообщить первой о необходимости повтора запроса. И тут они становятся зависимыми друг от друга!Я бы сделал так (мы недавно делали похожую систему, правда я потом отошёл от дел, поэтому точность не гарантирую):
- 2 очереди, одна с командами, вторая с ответами (у нас даже очередь с командами разбирали несколько исполнителей).
- обе очереди - это отдельные подсистемы, с API, которые по вводимым данным формируют у себя объект в своём формате. Т.е. если это ошибка, ты можешь установить через отдельный метод код ошибки, если надо ещё сообщение - через отдельный метод сообщение. И так далее. Тоже самое с командной очередью: свой объект, своё API.
- оба API делаются по необходимому минимуму.
- ни принимающая, ни обрабатывающая системы друг о друге не знают. Они так же не знают формат объектов в очередях, у них просто есть несколько функций, через которые они могут устанавливать/читать информацию о событии/команде.

кейс:SeriyKполучение из инета может быть с ошибкой- вторая система создаёт в очереди сообщений объект сообщения, передаёт в него код и текст.
- первая разгребает очередь, получает информацию об ошибке
- первая создаёт объект в очереди команд на повторное выполнение запроса.

скорее всего, есть какой-нибудь паттерн про это, но я в их названиях плохо разбираюсь


Балин! Да не в средстве доставки ошибки дело! Уже третий раз на этом циклятся!
Беда в том, что эти две подсистемы должны ОДИНАКОВО понимать произошедшии ситуации, т.е. теряют взаимную независимость, потому что одна подсистема должна подстраиваться под другую.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825218
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbпаттернОчереди - message orienred middleware
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825221
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKтеряют взаимную независимость,девственность всегда теряется.
https://ru.m.wikipedia.org/wiki/Контрактное_программирование
Контракты это документация к API
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825223
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Откуда неприязнь к зависимостям?
ИС моделирует реальный мир. А не вымышленный.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825226
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
Откуда неприязнь к зависимостям?
ИС моделирует реальный мир. А не вымышленный.

Тогда надо отказываться от универсального функционала. Ведь если он зависим от чего- то специфичного, то каждый раз эта специфика будет разной.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825229
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Универсальность враг хорошего.
Заказчик требует УНИКАЛЬНУЮ программу.
А менеджеры придумывают универсальность от лени и от прибыли.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825230
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,

Ну и молирование прелметки это УПРОЩЕНИЕ модели мира в некоторой степени. Она не один к олному.
А насколько упростить это искусство архитектора.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825231
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpмолированиемоДелирование.
Блин, этот тачпад))
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825235
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpSeriyK,
Универсальность враг хорошего.
Заказчик требует УНИКАЛЬНУЮ программу.
А менеджеры придумывают универсальность от лени и от прибыли.
Уникальность и универсальность - антагонизмы?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825239
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
И да и нет. От контекста зависит.
Универсальная абстрактно не бывает.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825241
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
В тз по гост не случайно главные это функциональные требования.
Там есть универсальность? Обычно нет.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825286
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKПовторюсь, что могу без лишних объектов (таких как очередь) бросить исключение, и оно само поднимется выше по стеку и передаст информацию о произошедшем. Вопрос в том, чтобы выше по стеку поняли как себя вести в этой ситуации. Возможно одно из двух:
1. Ниже по стеку должны знать потенциальные варианты действий подсистемы, находящейся выше по стеку (и подготавливали данные исходя из этого, сообщая об ошибке).
2. Выше по стеку умели интерпретировать результаты того, что происходит ниже."Смешались в кучу кони, люди ..."
Не нужно ничего такого : исключения для того и придуманы, чтобы много не думать.
В нормальной ситуации, необходимая информация об ошибке содержится в типе исключения. В редких случаях можно "завернуть" в исключение "что-нибудь дополнительное".
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825312
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKБеда в том, что эти две подсистемы должны ОДИНАКОВО понимать произошедшии ситуации

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

А типы исключений из воздуха появятся? У меня сейчас именно такая зависимость и присутствует: в одном модуле объявлены типы исключения, а второй модуль их порождает.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825353
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Преобразовывай при передаче в "OLE совместимые типы".
Или ещё во что то.
Главное что тебе как прогеру будет неудобно.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825354
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока я прихожу к такому решению: разделить задачу на:
1) универсальный неизменяемый функционал
2) все остальное

В этом случае п.1 можно положить в свою библиотеку функций (где лежат универсальные функции типа комбинация нескольких массивов в один) и не боясь устанавливать зависимость от этого неизменяемого функционала где только нужно. Иначе надо бояться в том числе изменения функций языка и с ними тоже работать через интерфесы (чтобы защититься от их изменения :) )

В представленном выше конкретном случае подсистему с бесконечным циклом надо лишить громкого звания подсистемы (забрав у нее интерфейс) и положить в общедоступные объекты, в ней определить необходимые для взаимодействия исключения и спокойно ее с этими исключениями использовать где нужно.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825355
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpSeriyK,
Преобразовывай при передаче в "OLE совместимые типы".
Или ещё во что то.
Главное что тебе как прогеру будет неудобно.

Шестая страница обсуждения, а вы так и не поняли, что зависимость появляется из- за необходимости ДОГОВОРИТЬСЯ и ОДИНАКОВО понимать происходящие ситуации. Хоть в 10 слоев заворачивайся обертками- все равно в конечном итоге встанет вопрос как с языка событий одной подсистемы перевести на язык действий другой подсистемы.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825360
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKШестая страница обсуждения, а вы так и не поняли,а есть тут кто нибудь кто тебя понял?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825363
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKкак с языка событий одной подсистемы перевести на язык действий другой подсистемы.про SOAP слышал? Какие мнения?
Ну или про COM?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825364
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKвсе равно в конечном итоге встанет вопрос как с языка событий одной подсистемы перевести
на язык действий другой подсистемы.

Если программист неспособен внятно описать API каждой из подсистем - да, всегда будет
вопрос костылей и прокладок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825365
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpSeriyKкак с языка событий одной подсистемы перевести на язык действий другой подсистемы.про SOAP слышал? Какие мнения?
Ну или про COM?
Дедушка COM...

Зачем он тут?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825368
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKВ этом случае п.1 можно положить в свою библиотеку функцийда.
dll с библиотечными функциями

SeriyKВ представленном выше конкретном случае подсистему с бесконечным циклом надо лишить громкого звания подсистемы (забрав у нее интерфейс) и положить в общедоступные объекты, в ней определить необходимые для взаимодействия исключения и спокойно ее с этими исключениями использовать где нужно.да
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825371
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДедушка COM...

Зачем он тут?у MS была цель как у ТС чтобы куски писали на разных ЯП)).
Но не получилось)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825374
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpSeriyK,

Термин "черный ящик" учили?
У него есть вход и выход.
У вас 2 ящика. Как считаете, они зависимы?))

Во вход втекает Н литров, в выход вытекает М литров.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825385
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинPetroNotC SharpSeriyK,

Термин "черный ящик" учили?
У него есть вход и выход.
У вас 2 ящика. Как считаете, они зависимы?))

Во вход втекает Н литров, в выход вытекает М литров.и...?
Мысль то формулируй)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825401
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpmaytonДедушка COM...

Зачем он тут?у MS была цель как у ТС чтобы куски писали на разных ЯП)).
Но не получилось)
Просто начали с SOAP. И логично было добавить бабушку CORBA, и брата дедушки DCOM.
Мне кажется последний родственник был заточен на межсетевую интеграцию.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825404
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
DCOM межсетевой COM.
А corba тогда в дельфи не котировался когда я там писал.
В других ЯП не знаю.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825405
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
вообще, IT ходит зигзагами)
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825439
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спиралью скорее.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825445
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСпиралью скорее.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825447
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спираль мебиуса
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825911
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKБалин! Да не в средстве доставки ошибки дело! Уже третий раз на этом циклятся!
Беда в том, что эти две подсистемы должны ОДИНАКОВО понимать произошедшии ситуации, т.е. теряют взаимную независимость, потому что одна подсистема должна подстраиваться под другую.
Вот по этому предложению не совсем понятно. "должны ОДИНАКОВО ... т.е. теряют взаимную независимость..."
Так "должны" плохо или "теряют" плохо?
Я тебе нарисовал систему, где твои две подсистемы независимы. Очереди предоставляют довольно универсальное API. Твои подсистемы друг о друге ничего не знают.

SeriyKШестая страница обсуждения, а вы так и не поняли, что зависимость появляется из- за необходимости ДОГОВОРИТЬСЯ и ОДИНАКОВО понимать происходящие ситуации. Хоть в 10 слоев заворачивайся обертками- все равно в конечном итоге встанет вопрос как с языка событий одной подсистемы перевести на язык действий другой подсистемы.Ты хочешь какой-то сферический конь в вакууме. Когда у тебя есть конкретные данные - у тебя будет зависимость, на чём бы ты ни писал. Не хочешь конкретные данные - напиши интерфейс, который на всё будет передавать/возвращать какой-нибудь _variant_t или boost::any и дальше каждая система будет решать, что с ним делать. Зато капец как независимо.
Хочется лёгкого перевода на другие языки? Пиши на чистых сях, они достаточно хорошо близки ко всему.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825919
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю так же посмотреть на проблему шире: а так ли нужна независимость?
К примеру, если надо от одной системе что-то передать другой, есть два варианта:
- системы просто договариваются о протоколе
- системы независимо валят всё в чёрный ящик и читают оттуда.

плюсы второго подхода мы знаем
минусы:
- надо городить чёрный ящик
- надо писать код, который разбирает данные из чёрного ящика
- надо писать код, который формирует данные из чёрного ящика. К примеру, у вас есть структура для состояния, вам придётся отдельно закидывать в ящик её составляющие. Потому что независимость.

плюсы первого подхода:
- вы просто скидываете и пишите/читаете пласт данных в/из потока.

неужели всё у вас в проекте так часто меняется, что приходится напрягаться в независимость? :)
я тут с одним ява-программистом дискутировал на тему переопределения операторов, что это удобно, на что он мне сказал: ну вот придёт в проект новичок, ему надо будет показывать, что где переопределено.
Я считаю, это большая проблема, выше уровнем, чем архитектурная: если в проект постоянно приходят новички
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825921
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbнеужели всё у вас в проекте так часто меняется, что приходится напрягаться в независимость? :)думаю он просто ищет крайние условия безотностительно проекта.
Как тянут руку в огонь и понимают по факту - это горячо.
Или как прогер каждый день думает - новую функцию? / перегрузку функции? /позвонить соисполнителю чтоб поправил входной char на int).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39825924
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb- системы просто договариваются о протоколе
- системы независимо валят всё в чёрный ящик и читают оттуда.первый прдход часто видел когда заказчик и соисполнитель близко и постоянно доступен. Рефакторинг делать легко.
Второй вариант когда между нашими и ихними в кавычках пропасть согласований, корректировки ЧТЗ и командировки.
То есть, я то свои системы стараюсь делать ЗАВИСИМЫМИ.
Вот в чем дело, автор).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39826392
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMbсистемы независимы. Очереди предоставляют довольно универсальное API. Твои подсистемы друг о друге ничего не знают.

Нет, будут знать!
SeriyKВопрос не в способе доставки, а во взаимо- понимании (договоренности) двух подсистем. Повторюсь, что могу без лишних объектов (таких как очередь) бросить исключение, и оно само поднимется выше по стеку и передаст информацию о произошедшем. Вопрос в том, чтобы выше по стеку поняли как себя вести в этой ситуации. Возможно одно из двух:
1. Ниже по стеку должны знать потенциальные варианты действий подсистемы, находящейся выше по стеку (и подготавливали данные исходя из этого, сообщая об ошибке).
2. Выше по стеку умели интерпретировать результаты того, что происходит ниже.

Введение промежуточного объекта ("переводчика" с языка одной подсистемы на язык другой) не изменит ситуацию, поскольку зависимость будет существовать через него.
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39826406
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyKНет, будут знать!это замечательно.
Разве это плохо?
Разве контроль типов это плохо?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39826410
SeriyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpэто замечательно.
Разве это плохо?
Разве контроль типов это плохо?

Да, это плохо: если мне потребуется вытащить из проекта небольшой функционал, то его подсистема "потянет" соседнюю, а та в свою очередь следующую и так надо будет перенести весь проект (из- за мелочи!). И дело не только в возможности копирования наработок, дело и в том, что непосредственно во время программирования надо в голове держать всю систему целиком (ведь она вся связана!), что усложняет разработку систем (уже при размере в 100 файлов все эти зависимости приводят к тому, что большинство времени уходит на "прыжки" по файлам и потуге удержать весь этот ансамбль в голове).
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39826421
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeriyK,
Ты как будто не читал что выше писали.
Если надо вытащить, то можно вытащить ФУНКЦИОНАЛЬНЫЕ куски.
Сердце нельзя вытащить, а ногу отрезать можно.
Ферштейн?
...
Рейтинг: 0 / 0
Как сделать проект более структурно понятным?
    #39826422
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а чтобы увидеть эти куски нужен опыт, практика, звание сеньора и т.д.
Кому счас легко (с)
...
Рейтинг: 0 / 0
170 сообщений из 170, показаны все 7 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать проект более структурно понятным?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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