|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
точнее тогда это был ещё C т.е. никакого ООП в помине не было ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 13:19 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbполудухМаргарет Гамильтон и её код для "Аполлона-11"Надо внутрь смотреть. (как и во всех случаях) Может, Маргарет не знала про такую штуку, как функции? Не, ну, мало ли, да? Я когда маленький был, я тоже столько кода писал. У меня откуда-то были рулоны туалетной бумаги для принтеров, что способствовало. Потом немного вырос и понял, что не в количестве пирогов счастье. Для ассемблеров это нормально. Вспомните как сорс выглядел. Мнемоника. Операнды. И ENTER. А бумага была для прочтения. Ибо персоналок не было. Машинное время было ограничено. А тут сиди себе. Читай. С чашкой кофе. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 13:39 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
полудухSeriyKпропущено... Ну что вы верите в откровенную ерунду. Функция на 200 листов А4 :) Если исходики 40 ГБ, то собранное ПО будет весить террабайт :) Вы сами хоть раз встречали такие программы в своей жизни? Маргарет Гамильтон и её код для "Аполлона-11" зы: терабайт Если читывать как бабы из мухи раздувают слона, можно предположить, что в этих книжках программа "Hello, world!" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 14:53 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbLepsikУ нас был 40 Gb исходников, а были файлы по мегобайту размером и функции свыше 10К строк.Если не секрет, что это было? Просто интересно, получается, в функции 10К строк уникального, неповторяющегося кода. Blackberry Server. Это был тело main thread. загрузка конфигурации, тестирования среды, запуски рабочих тредов. Собиралось 4 часа на довольно приличной билд машине в 2011 году. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:32 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
[quot полудух]Lepsikпропущено... дублирование кода можно и на сотни гб растянуть при желании а ф-и по 10к строк это вообще что-то адски неправильное Таки да 1 Гиг был кодогенерирован. И это же не один сервис, их масса, кода под MSSQL и Db2, поддержка 4 почтовых систем (MSExchanage, Lotus Domino, Novell, ...). Частично дублировался код для почтовых сервисов. Но кодовую базу совместить было невозможно ввиду специфики этих систем. Конечно там и утилиты и библиотеки и фрэмворки и прочая-прочая. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:40 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Интересно, есть ли какая-то метрика типа тысяч-миллионов-строк-на-человека при которой - развитие ПО останавливается - выделяется строгая фаза поддержки и небольших доработок - выделяется вечный неубываемый технический долг который уже невозможно погасить имеющимися ресурсами - теряется экспертиза. Знающие уходят с проекта (по разным причинам). - newcomers не разбираются во всём. Лишь могут охватить какие-то части или модули. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 18:48 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
mayton, Только экспертный метод. Эксперт - человек). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 19:33 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
полудухда вроде всё ок с ф-ями в NASA я тут уже не раз приводил их 10 правил , как сопровождать миллионы строк кода и не сойти с ума ( оригинал ) авторУказатели на функции запрещены. Ну ё. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 20:41 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
полудухя тут уже не раз приводил их 10 правил ,Спасибо, интересный мануал. Обнаружил, что некоторые правила выполняю уже на автомате, такие как проверки параметров-результатов и минимум указателей. Некоторые пункты сложно соблюдать, например отсутствие динамического выделения памяти, когда у тебя много зачитывается всякой конфигурации и прочего. Сюда же попадают ограничения на циклы. Но:полудухкак сопровождать миллионы строк кода и не сойти с умаэто немного перпендикулярно. Точнее, Power of 10 это необходимо, но недостаточно, говоря математически. полудухда и женский C++ полон сюрпризов Что имеется ввиду? Почему-то вспомнилась Алёна С++, но её код я не видел. maytonДля ассемблеров это нормально. Вспомните как сорс выглядел. Мнемоника. Операнды. И ENTER. А бумага была для прочтения. Ибо персоналок не было. Машинное время было ограничено.Ну я был не настолько маленький, я на бейсике писал, а так, да, персоналок и времени на них не было много, поэтому бумага. LepsikЭто был тело main thread. загрузка конфигурации, тестирования среды, запуски рабочих тредов.а в процентном соотношении можно примерно прикинуть, сколько кода на что ушло? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 07:03 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbполудухя тут уже не раз приводил их 10 правил ,Спасибо, интересный мануал. Обнаружил, что некоторые правила выполняю уже на автомате, такие как проверки параметров-результатов и минимум указателей. Некоторые пункты сложно соблюдать, например отсутствие динамического выделения памяти, когда у тебя много зачитывается всякой конфигурации и прочего. Сюда же попадают ограничения на циклы. Эти требования подходят для аэрокосмоса. Но для обычной бизнес-разработки их соблюсти очень сложно. Например требование - не использовать прямую или косвенную рекурсию . У нас - много рекурсии в поисковых алгоритмах и везде где есть процессинг XML/JSON или каких-то древовидных бизнес-объектах. Требование - Весь код должен компилироваться при всех включенных warning'ах . Возможно это реально соблюсти на С. Но в других языках в счет их естесвтенной бурной эволюции не получать никаких варнингов - это либо сложно либо невыполнимо в силу ситуации. Требование Не использовать динамическое распределение памяти после инициализации. . Я-бы обсудил. Сначала для С. А потом попробовал-бы обобщить. Если получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:25 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Вопрос по делу: по Мартину разделил свою программу на концентрические круги. Слой "Шлюзы, контроллеры, представления" отделяет от остальной программы в том числе реализацию внешних интерфейсов. Вопрос: что писать в этом слое для того, чтобы программа взаимодействовала с Qt- интерфейсом? В этом вопросе указанный слой вырождается в "пробрасывание вызовов" (с помощью класса- реализации, интерфейса и фабрики) от внтуреннего слоя "Сценарии" к внешнему слою с фреймворком Qt. Если для доступа к БД в этом слое находится SQL- код, как способ получения данных из любой sql- подобной базы данных, то в вопросе интерфейса этот слой выглядит очень смешно. Может при рассмотрении интерфейса, основанного на Qt, я не вижу какой- то части кода, которую для защиты надо вынести в промежуточный слой? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:27 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Все проще. Делить надо сначала по крупному - по функционалу. А потом в каждом куске можно уже по Мартину. Пример 1С: модуль Кадры, модуль ТорговляИСклад и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 11:01 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Для доступа к бд обычно ОРМ или рукописный паттерн репозиторий. А можно и dll DAO. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 11:04 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKВопрос по делу: по Мартину разделил свою программу на концентрические круги. Слой "Шлюзы, контроллеры, представления" отделяет от остальной программы в том числе реализацию внешних интерфейсов. Ссылка интересная. Спасибо. Почитаем. Круги никогда не применял. Но есть сомнения что в любой задаче мы можем выделить например "шлюзы". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 11:09 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpSeriyK, Все проще. Делить надо сначала по крупному - по функционалу. А потом в каждом куске можно уже по Мартину. Пример 1С: модуль Кадры, модуль ТорговляИСклад и т.д. "По крупному" программа уже поделена: я ведь не просто так спрашиваю конкретно об интерфейсе. В этом направлении у меня произошло вырождение одного из слоев (поэтому закралось подозрение, что я что- то в этом направлении не замечаю). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 12:52 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
maytonСсылка интересная. Спасибо. Почитаем. Круги никогда не применял. Но есть сомнения что в любой задаче мы можем выделить например "шлюзы". Эта статья- краткая выжимка книги Роберта Мартина "Чистая архитектура. Искусство разработки программного обеспечения" (2018 год) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 13:06 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, ОК. В Qt есть ГУИ не на виджетах, а на Quick. Во втором случае там Модель и свои законы. У тебя какой вариант? Хотя я Quick не люблю и у меня виджеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 13:24 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpSeriyK, ОК. В Qt есть ГУИ не на виджетах, а на Quick. Во втором случае там Модель и свои законы. У тебя какой вариант? Хотя я Quick не люблю и у меня виджеты. У меня простенькие формы (заголовок, три кнопки и текстовое поле для отображения хода работы) на виджетах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 13:32 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbполудухда и женский C++ полон сюрпризов Что имеется ввиду? Почему-то вспомнилась Алёна С++, но её код я не видел. то что в программировании крайне важно внимание к мелочам и скрупулёзность усидчивость и терпение (чтобы найти баг, например) а также недюжая мотивация к обучению у женщин же чаще в голове ветер и меньше ответственности "женщина может позволить себе быть ветренной, мужчина - нет" (с) крёстный отец maytonCEMbпропущено... Спасибо, интересный мануал. Обнаружил, что некоторые правила выполняю уже на автомате, такие как проверки параметров-результатов и минимум указателей. Некоторые пункты сложно соблюдать, например отсутствие динамического выделения памяти, когда у тебя много зачитывается всякой конфигурации и прочего. Сюда же попадают ограничения на циклы. Эти требования подходят для аэрокосмоса. Но для обычной бизнес-разработки их соблюсти очень сложно. Например требование - не использовать прямую или косвенную рекурсию . У нас - много рекурсии в поисковых алгоритмах и везде где есть процессинг XML/JSON или каких-то древовидных бизнес-объектах. Требование - Весь код должен компилироваться при всех включенных warning'ах . Возможно это реально соблюсти на С. Но в других языках в счет их естесвтенной бурной эволюции не получать никаких варнингов - это либо сложно либо невыполнимо в силу ситуации. Требование Не использовать динамическое распределение памяти после инициализации. . Я-бы обсудил. Сначала для С. А потом попробовал-бы обобщить. Если получится. ну мне лично больше понравилась книжка про "выстрелить в ногу", там полней и ценней правила ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 13:34 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
и современней ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 13:36 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKPetroNotC SharpSeriyK, ОК. В Qt есть ГУИ не на виджетах, а на Quick. Во втором случае там Модель и свои законы. У тебя какой вариант? Хотя я Quick не люблю и у меня виджеты. У меня простенькие формы (заголовок, три кнопки и текстовое поле для отображения хода работы) на виджетах. На простой можно ничего не делить. Если для обучения, то ... Твой круг Контроллеры вполне перекликается с MVC или MVVP. Тогда файл.ui и его h, cpp это View. ViewModel это класс myFormViewModel. Он отображает состояние ГУИ. Во вью состояния нет. Вот этого класса тебе не хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 13:46 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Опять вопросик: чтобы максимально разделить код по подсистемам решил использовать систему сигналов (а то у меня прямо в GUI- формах создавался новый поток и в нем запускалась обработка, что превращало код в лапшу). В правильном ли направлении я двигаюсь? Если да, то можете посоветовать книгу / статью на тему применения сигналов с точки зрения архитектуры приложения (чтобы не переизобрести велосипед с квадратными колесами)? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 17:29 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Два постулата имхо: - потоки редко нужны, т.к. само ГУИ однопоточно. - как выше сказано, не пишите ничего в VIEW. Там у вас класс как член поля. Вот туда все и передавайте. Зачем сигналами? Можно так myFormViewModel.clickButtonDelete(....) Как угодно можно назвать. Сигналы это события которых нет в плюсах). Так вроде). Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:55 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpSeriyK, Два постулата имхо: - потоки редко нужны, т.к. само ГУИ однопоточно. - как выше сказано, не пишите ничего в VIEW. Там у вас класс как член поля. Вот туда все и передавайте. Зачем сигналами? Можно так myFormViewModel.clickButtonDelete(....) Как угодно можно назвать. Сигналы это события которых нет в плюсах). Так вроде). Имхо. Потоки ОЧЕНЬ нужны, иначе интерфейс будет виснуть до окончания обработки, а сама обработка будет происходить в один поток. myFormViewModel.clickButtonDelete(....) - ужасное решение, которе делает зависимым модуль формы от модуля с потоком. А это две СОВЕРШЕННО РАЗНЫЕ сущности, которые должны жить абсолютно ничего не зная друг о друге. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 18:59 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Ну, если ожидание более 10 сек например, и курсор песоч.часы не устраивают, то можно и потоки. Тогда мне нравится подход MS в шарпе. Метод поточный всегда обозначен await. Можно так Код: plaintext 1.
Тогда управление сразу вернется в ГУИ. Заморозки не будет. Вот тут можно подписаться на событие окончания функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 19:23 |
|
|
start [/forum/topic.php?fid=57&msg=39822281&tid=2017607]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 164ms |
0 / 0 |