powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какие есть объективные метрики "хорошей архитектуры"?
25 сообщений из 136, страница 3 из 6
Какие есть объективные метрики "хорошей архитектуры"?
    #39080616
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Ttchingiz вызов функции и возврат из неё - точно такая же неограниченность как у goto.
goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.
return и вызов функции - работают в другую функцию
throw - такой же goto, так и другие, но не упомянутый Софтварером - работает в другую функцию
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080619
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T...
В список могу предложить только АСМ.
+ первоначальные версии FORTRAN, позволявшие, кроме этого, иметь несколько альтернативных точек входа в процедуру (ENTRY).

Есть две причины, по которым goto считают нежелательным: одна обращена к "стилю" программиста, вторая к эффективности выполнения goto компьютером.

Причина, обращенная к программистам, по по которой великие Дейкстра и Вирт изживали/проклинали goto заключается в том, что
код с использованием goto может оказаться непригоден (а может оказаться и пригоден) для автоматического улучшения оптимизирующим компилятором.
код вида (стрелки - переходы по GOTO)
----------
|блок 0 |
----------
/ \
/ \
--------- ----------
| блок 1| -> | блок 2 |
| | <- | |
---------- ----------
откажется оптимизировать, наверно, любой компилятор.

Как и "полу-вложенные" циклы вида

--------- цикл 1
|
|
| цикл 2 ----|
| |
| |
---------- |
|
----|

Но такой цикл, буде он понадобится, вряд ли возможно выписать "эффективно" иначе, как с использованием goto.

(Сдается, что именно величие Дейкстры и Вирта привело к превращению программистов в обезьян, хотя и не они были родоначальниками анти-goto движения. Т.к. обучение было просто заменено запретом использования.)

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

А современные процессорные реалии для платформ с много-конвейерным выполнением, вроде Intel, говорят так -
любые варианты переходов приводят к разрыву потока выполнения машинных команд.

Вместо помещения следующей команды на конвейер выполнения, идет вычисление адреса и чтение в кеш инструкций с вычисленного адреса.
В этом смысле "структурный" if, switch, continue, try-catch и т.д. и т.п. - все зло одного порядка с goto.
Иногда в целях определяют "близкий" и "далекий" переход (как в байт-кодах java-машины, например), но факта "разрыва потока выполнения" это отменить не может, даже если удается не перезаполнять кеш инструкций при "близком" переходе.
Чем больше goto, тем медленнее работает программа. И не важно - сидит он в кишках структурных If, try-cacth
или в явно выписанном программистом гонимом goto.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080635
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizreturn и вызов функции - работают в другую функцию
Они работают очевидно. Т.е. понятно как работают с первого взгляда на код.
tchingizthrow - такой же goto, так и другие, но не упомянутый Софтварером - работает в другую функцию
Про это вообще отдельный холивар можно устроить. Исключения - мутная тема, не пользуюсь, поэтому не буду спорить. Недавно на хабре была тема про исключения.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080640
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Ttchingizreturn и вызов функции - работают в другую функцию
Они работают очевидно. Т.е. понятно как работают с первого взгляда на код.


goto работает очевидно. Т.е. понятно как работает с первого взгляда на код.

в случае вызова функции func - надо сказать
Код: plaintext
1.
grep -n func *.cpp
чтобы найти функцию и читать код дальше.

в случае перехода на метку metka - надо сказать

Код: plaintext
1.
grep -n metka *.cpp
чтобы найти метку и читать код дальше.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080643
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby.
Чем больше goto, тем медленнее работает программа.
я уж боюсь вообразить как затормозить программу добавление в нее циклов while
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080648
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizgoto работает очевидно. Т.е. понятно как работает с первого взгляда на код.
Я честно сознался что думал goto позволяет перейти из одной функции в другую. В С/С++ не позволяет, не компилируется. Почему - вопрос второстепенный. При таком ограничении goto очевидно, не буду спорить.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080659
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Ttchingiz вызов функции и возврат из неё - точно такая же неограниченность как у goto.
goto может быть в другую функцию. break/return/continue работают в пределах одной функции. В этом принципиальное различие.Нет. Языки в которых явно существуют "функции" не позволяют делать goto в другие "функции". А вот языки в которых нету такой сущности - там можно прыгать как вздумается. Примеры: Asm, Basic, Fortran.
По существу, из-за этих языков и началась мода на запрет goto. Из-за которой уже и появились языки с четко выраженными структурными блоками.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080684
ищщин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tchingizbooby.
Чем больше goto, тем медленнее работает программа.
я уж боюсь вообразить как затормозить программу добавление в нее циклов while

деталь:
на сей момент я программирую исключительно в pl/sql, в котором нет циклов с постусловием.
Однажды, разглядывая вложенный цикл, я преодолел страх , и заменил while на допотопно-рукописный do ... while -
<<my_label>>
... some code ...
if condition then goto loop_label end;
И код тот я не показываю зевакам, и дело свое полезное он делает.

В общем же плане - бояться не надо - техника оптимизации, заключающаяся в объединении мелких циклов
в один придумана специфически для того, чтобы избежать слишком мелких, "однострочных" циклов.
Прежде чем начать бояться добавить while, разумно посмотреть - не может ли его тело быть объединено без разрыва потока
c одним из уже выписанных while.

Разумному программисту не всякий while страшен.
А не разумному и море по колено.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080742
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИсключения - мутная тема,
ничего мутного, особенно если разобраться с реализацией
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39080815
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
softwarerF#С моей точки зрения, основной вред от goto в его неограниченности
Вред от неограниченности невозможен. Возможен вред от ограниченности - невозможности применить там, где стоило бы. И возможен вред от неудачного применения.


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


F#(то есть при помощи goto можно перейти куда угодно - и именно пожтому трудно читать)
Для меня это звучит религиозным догматом. Попробую привести фрагмент кода, который проиллюстрирует мысль:

Код: plaintext
1.
2.
1: for (int i = 0; i < 10; i++) goto 1; // трудно читать, потому что goto
1: for (int j = 0; j < 10; j++) break 1; // легко читать, потому что не goto




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

F#Более того catch и finaly вполне себе структурные - они не влияют на поведение кода внутри данного блока, а только на обработку ошибочных ситуаций вне его и не мешают анализу кода.
Это снова вопрос восприятия. catch и finally - это goto, который заменяет "правильный структурный" if (!error) ..... Влияют ли они на анализ - зависит от того, как они используются.


Если вы процессор который выполняет код, то для вас все эквивалентно goto, если вы человек, то для анализа кода важны гарантии и ограничения. Catch и finally ограничены по сравнению с goto и также декларируют предназнаяение кусков кода.

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


Если наложить на себя ограничение не писать такого кода нигде кроме начала функции, вред от нескольких точек выхода уменьшается - фактически, поверх стандартного синтаксиса языка такое соглашение добавляет некоторую секцию guard conditions в описание функции которая просто переиспользует фигурные скобки тела функции для условия.

А еще я люблю равиолли-код и стараюсь не делать больших функций.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081013
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не об хорошей архитектуре, а хоть какой-то ...

Рассмотрим к примеру создание проектов, которые имеют скажем много диалоговых форм и
формируют много отчетов.

Начнем с простого примера.
К примеру рассмотрим ту часть проекта, которая связана с формированием отчетов.

Без всякой архитектуры
----------------------------
Формируем отчеты с использованием "жесткого" кода без предоставления всяких настроек ...

С хоть какой-то архитектурой
----------------------------------
Имеется какая-либо подсистема управления отчетами, которая к примеру /упрощенно/ предоставляет возможности
настройки и работы с отчетами.
К примеру:

- опции формируемых pages берутся из /например/ xml file;

- сохраняются данные об сформированных отчетах /в т.ч. last reports/;

- возможность отправки отчетов на e-mail;

- ...

- ...

- ...

В чем разница в подходах?

Программы без всякой архитектуры не позволяют и не умеют ... ... ..

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

PS: Вопросы организации программного кода также важны, но на мой взгляд это уже скорее
подход к реализации архитектуры.
При этом архитектура и реализация программного кода должна быть спроектирована так, чтобы
эту подсистему /например "управления отчетами"/ могли легко расширить и использовать другие программисты.

Конечно об выше сказанном можно сказать это "тривиально и об этом и так всем известно" ...
Что по этому поводу можно ответить?
Знать и использовать "знания" это как "небо и земля".
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081058
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ список могу предложить только АСМ.
Ну, ещё древние версии бейсика, те, которые обязывали нумеровать строки и не имели подпрограмм. Но в целом goto за пределы функции действительно нехарактерен, например, в Си для этого придумали специальную сладкую парочку setjmp/longjmp . В древние времена одной из претензий к goto называли то, что им можно прыгнуть внутрь цикла, что, в принципе, может привести программу в непредсказуемое состояние, но сказать честно, я никогда не видел того "спагетти", о котором писал Дейкстра, и никогда не видел, чтобы goto использовался человеком, который не знал бы очень чётко что и зачем он делает.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081068
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищщинна сей момент я программирую исключительно в pl/sql, в котором нет циклов с постусловием
Это не совсем правда.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
  i integer := 1;
begin
  loop
    dbms_output.put_line(i);
    i := i + 1;
    exit when i > 5;
  end loop;
end;


- вполне себе неплохой заменитель цикла с пост-условием. В PL/SQL действительно иногда целесообразно использовать goto, но потому, что там нет finally и continue.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081078
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИсключения - мутная тема, не пользуюсь, поэтому не буду спорить.
У Джоэля была хорошая фраза про то, что оперирование указателями - это не навык, а способность, которая либо есть, либо нет. Я иногда думаю, что её можно сказать и про исключения.

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

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

https://golang.org/doc/faq#exceptions Why does Go not have exceptions?

We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code. It also tends to encourage programmers to label too many ordinary errors, such as failing to open a file, as exceptional.

Go takes a different approach. For plain error handling, Go's multi-value returns make it easy to report an error without overloading the return value. A canonical error type, coupled with Go's other features, makes error handling pleasant but quite different from that in other languages.

Go also has a couple of built-in functions to signal and recover from truly exceptional conditions. The recovery mechanism is executed only as part of a function's state being torn down after an error, which is sufficient to handle catastrophe but requires no extra control structures and, when used well, can result in clean error-handling code.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081104
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

заменитель, только с двумя goto вместо одного.
Надо сказать, что сделал сделал я это один единственный раз, в одном единственном месте.
Там, где идет работа с базой данных, о желании пооптимизировать работу goto не стоит рассказывать вслух и прилюдно. Могут и уволить, не дождавшись конца рассказа.

continue есть с 11 версии,
потребности в finally ощутить не сумел, так как практически не использую "объектные возможности".
Лично для себя вывел следующее "отдаленно похожее на finally" правило большого пальца:
Серверная процедура , возвращающая скалярные значения ( не курсоры) и предназначенная для вызова с клиента, должна исключать возможность явного выброса ошибки наружу. Здесь в качестве finally работает блок when others такой процедуры.
Может быть это плохое правило, т.к. ведет к явному разделению серверного кода на предназначенный для вызова с клиента и не предназначенный, за счет включения "лишних" возвращаемых параметров об успешности выполнения. Но лучшего пока не изобрел.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081110
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer... никогда не видел, чтобы goto использовался человеком, который не знал бы очень чётко что и зачем он делает.
Примеров полно . Открывай любой студенческий топик :)

softwarerDima TИсключения - мутная тема, не пользуюсь, поэтому не буду спорить.
Чтобы понять исключения, надо просто заставить человек год-другой-третий хорошо попрограммировать без исключений. Не простые учебные задачи, а настоящие. После этого показать ему исключения - и он бросится на них как на манну небесную.
Я тот самый человек. Долго писал на FoxPro 2 (DOS), затем на 6-м фоксе, затем перешел на 9-й, где одно из новшеств это исключения. Как-то не впечатлился этой манной небесной, не пользуюсь. Теорию знаю, после изучения теории желание применить было, но было негде. Сейчас есть где, но желания нет.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081120
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F#Мне кажется только из за любви к спору такой знающий человек как вы написали такую фразу.
Я никогда не делаю чего-либо из любви к спору. Но нередко за неё принимают любовь к неочевидной собеседнику истине.

F#Существуют польза от ограничений (к лестницам зачем-то приделывают перила)
Польза от ограничений и вред от неограниченности - разные вещи. Правильнее сказать так - от ограничений бывает польза и бывает вред, от неограниченности бывает польза и бывает вред. Лестничные перила, кстати - исключительно удачный пример. Они бывают далеко не на всех лестницах, а там, где бывают - как правило, позволяют через себя перелезть. То есть защищают от случайных проблем, но не сдерживают целенаправленное действие. Для ЯП именно такой подход обычно является лучшим вариантом.

F#Никогда не использовал break с меткой, и, как мне кажется, ни один язык с которым я работал этого не позволяет.
Я не знаю точно, какие именно позволяют, но суть ведь не в этом.

F#Но мне кажется, логически по второму утверждению можно сказать больше чем по первому - например, что будет очуществлен выход из какого-то цикла, а не передача управления в произвольное место функции. Так?
Имхо, по обоим можно сказать, что в результате произойдёт выход из какого-то количества вложенных циклов и управление останется внутри другого количества вложенных циклов (то и другое может быть и нулевым). Это если формально. А если фактически - то в обоих случаях надо отыскать глазами метку и дальше никакой разницы (ну кроме того, что первая строчка зациклится, а вторая - нет, но этого так никто и не увидел )

F#softwarerЭто снова вопрос восприятия. catch и finally - это goto, который заменяет "правильный структурный" if (!error) ..... Влияют ли они на анализ - зависит от того, как они используются.

Если вы процессор который выполняет код, то для вас все эквивалентно goto, если вы человек, то для анализа кода важны гарантии и ограничения. Catch и finally ограничены по сравнению с goto и также декларируют предназнаяение кусков кода.
Метка в goto обычно является осмысленным идентификатором и также декларирует предназначение goto. Ещё раз: это вопрос сугубо восприятия. Вы привыкли к некоторым конструкциям, и они кажутся Вам проще и понятнее. Возьмёте другой язык, другую практику - привыкнете к его специфике. Я, вот, привык даже к такому убожеству, как неименованные и ненаследуемые конструкторы :)

F#Если наложить на себя ограничение не писать такого кода нигде кроме начала функции, вред от нескольких точек выхода уменьшается - фактически, поверх стандартного синтаксиса языка такое соглашение добавляет некоторую секцию guard conditions в описание функции которая просто переиспользует фигурные скобки тела функции для условия.
Можно воспринимать и так. Но, в общем, не суть. Вред от "длинного блока" в любом случае больше, чем от "нескольких точек выхода".

F#А еще я люблю равиолли-код и стараюсь не делать больших функций.
Я тоже, но это зависит от задачи и инструмента. Не так редко большие функции являются естественным и правильным (с точки зрения в том числе читаемости кода и прочего удобства сопровождения) выражением мысли. Чтобы искусственно внедрить мелкие функции, приходится делать либо вложенные функции (сомнительная практика, имхо) либо искусственный класс (что, пожалуй, ещё хуже).
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081131
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyзаменитель, только с двумя goto вместо одного
Эдак Вы и в самом структурном цикле найдёте goto.

boobycontinue есть с 11 версии
Эх, с одиннадцатой. Ещё хватает клиентов, которые с девятки-то не ушли :)

booby потребности в finally ощутить не сумел, так как практически не использую "объектные возможности"
Пожму плечами. finally - наиболее очевидно необходимая вещь во всех исключениях. Если Вы хоть раз явно открывали курсор, странно не ощущать потребности в ней.

boobyЛично для себя вывел следующее "отдаленно похожее на finally" правило большого пальца:
Серверная процедура , возвращающая скалярные значения ( не курсоры) и предназначенная для вызова с клиента, должна исключать возможность явного выброса ошибки наружу. Здесь в качестве finally работает блок when others такой процедуры.
Блок when others при всём желании не сможет работать как finally (ну разве что если возбуждать исключение специально чтобы в него попасть).

Что же до правила - оно имхо максимально неудачно и может быть понято только если в качестве клиента выступает какое-нибудь древнее убожество, которое не умеет работать с исключениями. Но это тема скорее для форума Oracle.

booby Может быть это плохое правило, т.к. ведет к явному разделению серверного кода на предназначенный для вызова с клиента и не предназначенный,
В инкапсуляции в принципе нет ничего плохого. Просто это правило - примерно как оглобли, приделанные к автомобилю.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081159
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T Примеров полно . Открывай любой студенческий топик :)
Открыл первый же. Применение осознанное и разумное, укладывающееся как раз в последнюю оставшуюся типовую ситуацию - "вроде finally для continue". Я бы, допустим, предпочёл реализовать этот участок кода через цикл for и без goto, но возмущаться тупостью автора меня не тянет.

Dima TЯ тот самый человек. Долго писал на FoxPro 2 (DOS), затем на 6-м фоксе, затем перешел на 9-й, где одно из новшеств это исключения. Как-то не впечатлился этой манной небесной, не пользуюсь. Теорию знаю, после изучения теории желание применить было, но было негде. Сейчас есть где, но желания нет.
От второго фокса у меня осталось смутное воспоминание о чём-то жутком. Скажу так, лично я истинный смысл исключений ощутил в тот момент, когда, уже какое-то время поработав с ними (ну так - приятная фенька) вдруг оказался перед необходимостью написать на Турбо-Паскале вещь гораздо более сложную, чем писал в студенческие времена. И вот, после того как я в третий раз переписал код так, чтобы ошибки обрабатывались где нужно и как нужно, и при этом работа с ними не загромождала логику, не занимала места в пять раз больше, чем собственно основной код итп, я вдруг осознал, что та подсистема обработки ошибок, которую я делаю - это велосипедная реализация исключений. И сравнив лучшее, чего мне удалось добиться, с чеканной стройностью, понятностью и красотой кода с исключениями - я, мягко говоря, не захотел больше возвращаться в тёмное прошлое.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081330
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЯ бы, допустим, предпочёл реализовать этот участок кода через цикл for и без goto, но возмущаться тупостью автора меня не тянет.
Думаю потянет, если он привыкнет и начнет все циклы так реализовывать.

softwarerОт второго фокса у меня осталось смутное воспоминание о чём-то жутком.
Скорее всего просто не освоил. В фоксе многое не так "как везде", из-за этого большой порог входа.
softwarerСкажу так, лично я истинный смысл исключений ощутил в тот момент, когда, уже какое-то время поработав с ними (ну так - приятная фенька) вдруг оказался перед необходимостью написать на Турбо-Паскале вещь гораздо более сложную, чем писал в студенческие времена. И вот, после того как я в третий раз переписал код так, чтобы ошибки обрабатывались где нужно и как нужно, и при этом работа с ними не загромождала логику, не занимала места в пять раз больше, чем собственно основной код итп, я вдруг осознал, что та подсистема обработки ошибок, которую я делаю - это велосипедная реализация исключений. И сравнив лучшее, чего мне удалось добиться, с чеканной стройностью, понятностью и красотой кода с исключениями - я, мягко говоря, не захотел больше возвращаться в тёмное прошлое.
ИМХУ ты не на то акцент сделал. Главное тут "в третий раз переписал", а с исключениями или без - дело десятое. Думаю и без исключений уже не было бы в пять раз больше кода обработки ошибок.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081347
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покурил Golang - и в третий раз снова переписал. Уже клиника ...
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081451
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer...
Эдак Вы и в самом структурном цикле найдёте goto.

неужели есть сомнения в его там наличии? :)

softwarerПожму плечами. finally - наиболее очевидно необходимая вещь во всех исключениях. Если Вы хоть раз явно открывали курсор, странно не ощущать потребности в ней.

Пожму плечами. Finally - в части обязательной достижимости - синтаксический сахар,
"Играет" он только сохранением контекста возникшего в try неконтролируемого исключения.
Что с какой-то долей приближения тоже имитируется при необходимости.
Зачем придумали try-with-resources, если finally и без него великолепен?
И почему их теперь два - try? Как понять где resources, а где нет.
Вот выделенный массив в памяти - это не resources, а манипулятор файлом - resources.
Потому что ресурс под названием массив полностью управляется машиной времени выполнения. Его она сама освободит (когда-нибудь) без участия программиста.
А манипулятор файла - ресурс, запрашиваемый из внешнего, по отношению к runtime, мира.

Для pl/slq курсорная переменная, объявленная и открытая в блоке - локально управляемый ресурс, аналогично памяти в системах со сбором мусора.
Машина выполнения pl/sql гарантирует освобождение этого ресурса если не сразу по выходу курсорной переменной из области видимости, то по завершению вызова. И обычно гораздо раньше, чем проснется сборщик мусора в java.
Закрывать явно локально открытые курсоры - гораздо ближе к благим пожеланиям и правилам хорошего тона, чем к мечтам о finally.

softwarerБлок when others при всём желании не сможет работать как finally (ну разве что если возбуждать исключение специально чтобы в него попасть).

значит, все-таки может. Хотя я на этом в детальной точности не настаиваю.
Речь идет о "замыкании", гарантии завершения одного блока в целях 100% попадания в следующий. В частном случае следующим может быть сам раздел when others.

softwarerЧто же до правила - оно имхо максимально неудачно и может быть понято только если в качестве клиента выступает какое-нибудь древнее убожество, которое не умеет работать с исключениями. Но это тема скорее для форума Oracle.
...

Мне кажется, что "убожество" здесь ключевое слово.
В том смысле, что все не соответствующее "моей" модели восприятия мира является убожеством.
Мне вот может представляться убожеством, что где-то еще есть клиенты , эксплуатирующие Oracle 9i.
Раз клиенты, значит эксплуатируют 9i, оплачивая при этом Sustaining Support, и не имея технической возможности замены версии.
Верю я в это или нет (верю) - не имеет "архитектурного" значения.

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

Та тропинка, которая привела меня к моей оглобле, в целом двигалась из точки зрения, считающей, что клиент - внешний по отношению к "системе" потребитель.
К степени убожества которого я, если смогу, не буду предъявлять специальных требований,
а если не смогу, то буду искать способ их минимизации.
Думаю, что вы попутали. Если клиент - автомобиль, то я не предполагаю наличие или отсутствие у него оглоблей.
Я предлагаю ему трос, уцепившись за который он сможет вытащить интересующую его информацию из внешней по отношению к нему, клиенту, системы.
О том - открываются курсоры и как закрываются - в нормальной истории ему знать не положено, предположительно совсем.
Это в предположении, что слой доступа к данным и взаимодействия с сервером он не рожает сам, а берет любой готовый, с любым крюком, пригодным к цеплянию за мой трос.

Хотя, если убрать оглобли и убожество, все действительно сведется к техническим особенностям, связанным с обработкой исключений "убогими клиентами" тоже.

Как у телеги две оглобли, так и у меня есть еще одно, второе "правило большого пальца"
по вопросу взаимодействия с убогими клиентами.
Но от темы исключений/goto оно еще дальше, так что пусть ждет следующих встреч.
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081530
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встречаются разные извращения, например

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
while (true)
{
   ...
   if (<условие1>)
   {
      break;
   }
   ...
   if (<условие N>)
   {
      break;
   }
   ...
   break;
}
...
Рейтинг: 0 / 0
Какие есть объективные метрики "хорошей архитектуры"?
    #39081539
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цикл Дейкстры забыли.

http://blog.kislenko.net/show.php?id=940
...
Рейтинг: 0 / 0
25 сообщений из 136, страница 3 из 6
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какие есть объективные метрики "хорошей архитектуры"?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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