powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать проект более структурно понятным?
25 сообщений из 170, страница 4 из 7
Как сделать проект более структурно понятным?
    #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
25 сообщений из 170, страница 4 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать проект более структурно понятным?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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