|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKв моем случае это подсистема гарантированного выполнения переданной функциивы правильно делаете что ищите Повторяемы код или функционал. Я не пойму что это такое выше вы назвали. На первый взгляд это слишком мелко. Вы бы код показали. - легаси проект или новый? - просто класс выделить подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 08:35 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKпереводчика" с языка одной подсистемы на язык другой)посмотрите вокруг себя. Все уже изобретено. В веб таким переводчиком является код возврата Http.error. Это просто перечислимое. Но это гетерогенные среды! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 08:53 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKгарантированного выполнения переданной функциикак корабль назовешь, так он и поплывёт))) Юмор люблю. .. Названия подмодулей должен понимать заказчик не программист. Измените название чтобы записать в ТЗ и его понимали. То есть опять таки функционал! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 08:57 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK1. Ниже по стеку должны знать потенциальные варианты действий подсистемы, находящейся выше по стеку (и подготавливали данные исходя из этого, сообщая об ошибке).при http.error это нет. Внизу тупо передают код 404 по факту. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 09:03 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKПроблема в том, что получение из инета может быть с ошибкой и надо как- то из второй подсистемы сообщить первой о необходимости повтора запроса. И тут они становятся зависимыми друг от друга!Я бы сделал так (мы недавно делали похожую систему, правда я потом отошёл от дел, поэтому точность не гарантирую): - 2 очереди, одна с командами, вторая с ответами (у нас даже очередь с командами разбирали несколько исполнителей). - обе очереди - это отдельные подсистемы, с API, которые по вводимым данным формируют у себя объект в своём формате. Т.е. если это ошибка, ты можешь установить через отдельный метод код ошибки, если надо ещё сообщение - через отдельный метод сообщение. И так далее. Тоже самое с командной очередью: свой объект, своё API. - оба API делаются по необходимому минимуму. - ни принимающая, ни обрабатывающая системы друг о друге не знают. Они так же не знают формат объектов в очередях, у них просто есть несколько функций, через которые они могут устанавливать/читать информацию о событии/команде. кейс:SeriyKполучение из инета может быть с ошибкой- вторая система создаёт в очереди сообщений объект сообщения, передаёт в него код и текст. - первая разгребает очередь, получает информацию об ошибке - первая создаёт объект в очереди команд на повторное выполнение запроса. скорее всего, есть какой-нибудь паттерн про это, но я в их названиях плохо разбираюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:01 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbSeriyKПроблема в том, что получение из инета может быть с ошибкой и надо как- то из второй подсистемы сообщить первой о необходимости повтора запроса. И тут они становятся зависимыми друг от друга!Я бы сделал так (мы недавно делали похожую систему, правда я потом отошёл от дел, поэтому точность не гарантирую): - 2 очереди, одна с командами, вторая с ответами (у нас даже очередь с командами разбирали несколько исполнителей). - обе очереди - это отдельные подсистемы, с API, которые по вводимым данным формируют у себя объект в своём формате. Т.е. если это ошибка, ты можешь установить через отдельный метод код ошибки, если надо ещё сообщение - через отдельный метод сообщение. И так далее. Тоже самое с командной очередью: свой объект, своё API. - оба API делаются по необходимому минимуму. - ни принимающая, ни обрабатывающая системы друг о друге не знают. Они так же не знают формат объектов в очередях, у них просто есть несколько функций, через которые они могут устанавливать/читать информацию о событии/команде. кейс:SeriyKполучение из инета может быть с ошибкой- вторая система создаёт в очереди сообщений объект сообщения, передаёт в него код и текст. - первая разгребает очередь, получает информацию об ошибке - первая создаёт объект в очереди команд на повторное выполнение запроса. скорее всего, есть какой-нибудь паттерн про это, но я в их названиях плохо разбираюсь Балин! Да не в средстве доставки ошибки дело! Уже третий раз на этом циклятся! Беда в том, что эти две подсистемы должны ОДИНАКОВО понимать произошедшии ситуации, т.е. теряют взаимную независимость, потому что одна подсистема должна подстраиваться под другую. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:12 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
CEMbпаттернОчереди - message orienred middleware ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:15 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKтеряют взаимную независимость,девственность всегда теряется. https://ru.m.wikipedia.org/wiki/Контрактное_программирование Контракты это документация к API ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:19 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Откуда неприязнь к зависимостям? ИС моделирует реальный мир. А не вымышленный. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:22 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpSeriyK, Откуда неприязнь к зависимостям? ИС моделирует реальный мир. А не вымышленный. Тогда надо отказываться от универсального функционала. Ведь если он зависим от чего- то специфичного, то каждый раз эта специфика будет разной. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:26 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Универсальность враг хорошего. Заказчик требует УНИКАЛЬНУЮ программу. А менеджеры придумывают универсальность от лени и от прибыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:40 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Ну и молирование прелметки это УПРОЩЕНИЕ модели мира в некоторой степени. Она не один к олному. А насколько упростить это искусство архитектора. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:42 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpмолированиемоДелирование. Блин, этот тачпад)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:44 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpSeriyK, Универсальность враг хорошего. Заказчик требует УНИКАЛЬНУЮ программу. А менеджеры придумывают универсальность от лени и от прибыли. Уникальность и универсальность - антагонизмы? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 10:57 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
mayton, И да и нет. От контекста зависит. Универсальная абстрактно не бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 11:08 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
mayton, В тз по гост не случайно главные это функциональные требования. Там есть универсальность? Обычно нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 11:10 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKПовторюсь, что могу без лишних объектов (таких как очередь) бросить исключение, и оно само поднимется выше по стеку и передаст информацию о произошедшем. Вопрос в том, чтобы выше по стеку поняли как себя вести в этой ситуации. Возможно одно из двух: 1. Ниже по стеку должны знать потенциальные варианты действий подсистемы, находящейся выше по стеку (и подготавливали данные исходя из этого, сообщая об ошибке). 2. Выше по стеку умели интерпретировать результаты того, что происходит ниже."Смешались в кучу кони, люди ..." Не нужно ничего такого : исключения для того и придуманы, чтобы много не думать. В нормальной ситуации, необходимая информация об ошибке содержится в типе исключения. В редких случаях можно "завернуть" в исключение "что-нибудь дополнительное". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 12:12 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKБеда в том, что эти две подсистемы должны ОДИНАКОВО понимать произошедшии ситуации Не должны. Если подсистемы выполняют разные функции, то ситуации у них совершенно разные. Одна и та же ситуация не может произойти в разных подсистемах, соответственно и одинаковое "понимание" её не требуется. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 12:44 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov"Смешались в кучу кони, люди ..." Не нужно ничего такого : исключения для того и придуманы, чтобы много не думать. В нормальной ситуации, необходимая информация об ошибке содержится в типе исключения. В редких случаях можно "завернуть" в исключение "что-нибудь дополнительное". А типы исключений из воздуха появятся? У меня сейчас именно такая зависимость и присутствует: в одном модуле объявлены типы исключения, а второй модуль их порождает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:12 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyK, Преобразовывай при передаче в "OLE совместимые типы". Или ещё во что то. Главное что тебе как прогеру будет неудобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:27 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
Пока я прихожу к такому решению: разделить задачу на: 1) универсальный неизменяемый функционал 2) все остальное В этом случае п.1 можно положить в свою библиотеку функций (где лежат универсальные функции типа комбинация нескольких массивов в один) и не боясь устанавливать зависимость от этого неизменяемого функционала где только нужно. Иначе надо бояться в том числе изменения функций языка и с ними тоже работать через интерфесы (чтобы защититься от их изменения :) ) В представленном выше конкретном случае подсистему с бесконечным циклом надо лишить громкого звания подсистемы (забрав у нее интерфейс) и положить в общедоступные объекты, в ней определить необходимые для взаимодействия исключения и спокойно ее с этими исключениями использовать где нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:29 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
PetroNotC SharpSeriyK, Преобразовывай при передаче в "OLE совместимые типы". Или ещё во что то. Главное что тебе как прогеру будет неудобно. Шестая страница обсуждения, а вы так и не поняли, что зависимость появляется из- за необходимости ДОГОВОРИТЬСЯ и ОДИНАКОВО понимать происходящие ситуации. Хоть в 10 слоев заворачивайся обертками- все равно в конечном итоге встанет вопрос как с языка событий одной подсистемы перевести на язык действий другой подсистемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:33 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKШестая страница обсуждения, а вы так и не поняли,а есть тут кто нибудь кто тебя понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:40 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKкак с языка событий одной подсистемы перевести на язык действий другой подсистемы.про SOAP слышал? Какие мнения? Ну или про COM? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:41 |
|
Как сделать проект более структурно понятным?
|
|||
---|---|---|---|
#18+
SeriyKвсе равно в конечном итоге встанет вопрос как с языка событий одной подсистемы перевести на язык действий другой подсистемы. Если программист неспособен внятно описать API каждой из подсистем - да, всегда будет вопрос костылей и прокладок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2019, 13:43 |
|
|
start [/forum/topic.php?fid=57&msg=39825229&tid=2017607]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 142ms |
0 / 0 |