|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
кто хорошо в теме разбирается - есть какие-то мировые лидеры мнений которые топят за исключения? один програмист мне доказывает что коды лучше потому что так Джоэл сказал, очевидно надо найти не менее или примерно такого же по авторитету человека который топит за исключения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 19:15 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя Коля, обе фигня - код должен работать безошибочно (никаких исключений) и не должен возвращать ничего, кроме того, за чем его вызвали. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 19:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя Коля, Какая смешная просьба). У молодежи же нет авторитетов). Это в раздел ПТ надо). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 19:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosи не должен возвращать ничего, кроме того, за чем его вызвали. Прямо дедовщина какая то)). А если не смогла? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 19:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123, на выход без пособия ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 19:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя Коля, При чём тут мнение? Не надо топить или не топить за исключения. Если в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения. Если в компанию в разработку на C# придёт хоть трижды авторитетный человек со своими кодами вместо исключений, то пойдёт сразу на рынок труда со всеми своими монатками и дебильным мнением. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 21:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosДядя Коля, обе фигня - код должен работать безошибочно (никаких исключений) и не должен возвращать ничего, кроме того, за чем его вызвали.когда пользователь откроет несуществующий файл или с несуществующего диска, программа вернет то что должна? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 21:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman MejtesViPRosДядя Коля, обе фигня - код должен работать безошибочно (никаких исключений) и не должен возвращать ничего, кроме того, за чем его вызвали.когда пользователь откроет несуществующий файл или с несуществующего диска, программа вернет то что должна? нех показывать пользователю несуществующий файл с несуществующего диска ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 22:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman Mejtesкогда пользователь откроет несуществующий файл или с несуществующего диска, программа вернет то что должна? По-моему очевидно, код 666. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 22:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosнех показывать пользователю несуществующий файл с несуществующего диска А чё его скрывать? Может показывать только с правами админа? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 22:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRos, а если это программа для пользователя, которому ничего указывать не надо, он сам всё указывает, например из командной строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 23:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman MejtesViPRos, а если это программа для пользователя, которому ничего указывать не надо, он сам всё указывает, например из командной строки? ну, значит надо как то сделать так что бы твой интерпретатор команд не допускал ввода неверных команд че ты так взъелся? ты ж не джойл тот? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2018, 23:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosобе фигня - код должен работать безошибочно (никаких исключений) и не должен возвращать ничего, кроме того, за чем его вызвали. Приложение работает с БД. Во время выполнения запроса сервер внезапно падает. Есть предложения, как реализовать работу кода в данном случае безошибочно, и без исключений? try/catch не предлагать, т.к. их использование уже подразумевает работу с исключениями. Таких ситуаций можно привести еще вагон. А коды возврата очень любят люди с травмой головы от винапи. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 06:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныА коды возврата очень любят люди с травмой головы от винапи)))) +1 GetLastError ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 07:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Если исключение не проглатывать, то оно само рэйзится в вызывающую процедуру. А код возврата надо специально возвращать в вызывающую процедуру. Для многочисленных вложенных вызовов в этом и смысл: "даже если прогер упустил что-то, то исключение вылетит и проинформирует" Но, если работаешь с фреймворком, то про эти try/catch надо забыть, в случае возникновения ошипки фреймворк сам в лог запишет. Главное правило - не писать свои коды ошибок и обработчики, просто залогировать эксепшн или выкинуть юзеру, чтоб разраб видел код ошипки системы, а не хрень на русском, типа "данный контрагент не может делать эту операцию" Ну если у вас своя самописка, то там канеш навалом try/catch придется налепить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 08:03 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 08:15 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакА код возврата надо специально возвращать в вызывающую процедуру.был один старый проект из 300 методов работы с базой Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 08:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Где-то в степи Код: java 1. 2. 3. 4. 5. 6. 7. 8.
В веб проект на сервере в Африке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 08:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123, любителям джавы расажите ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 08:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Где-то в степи Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Файл экзист, но аксесс денайд - что тогда? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 08:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Где-то в степиPetro123, любителям джавы расажитеда. Там не забалуешь. Там out, ref, var параметров нету.) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 09:03 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакГлавное правило - не писать свои коды ошибок и обработчики, просто залогировать эксепшн или выкинуть юзеру, чтоб разраб видел код ошипки системы, а не хрень на русском, типа "данный контрагент не может делать эту операцию" Ну если у вас своя самописка, то там канеш навалом try/catch придется налепить. Сколько пафоса! Нужно и юзеру показать, что "в данный момент операция невозможно", и разработчику, что "в процедуре YYY возникло исключение XXX". Разрабу точно надо видеть, что клиент потерял связь с базой, если это исключение обрабатывается в программе? ============== Любая программа для кого-то является самопиской. Мы тут, все, собственно говоря, сами пишем ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 09:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
вчера ругался с бекендом, "error -206 Ошибка формата данных" час он разбирался в своем говнокоде, где ексепшен, и что там с данными ( их там х.. гора) а если бы локализовал в каком участке джйсана - 5 -8 минут исправить. Ну это имхо росийская болезнь рос криворуких ебланов ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 09:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя Коляодин програмист мне доказывает что коды лучше потому что так Джоэл сказал что-то не смог нагуглить, кто это такой? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 09:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRДядя Коляодин програмист мне доказывает что коды лучше потому что так Джоэл сказал что-то не смог нагуглить, кто это такой? тынц ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 09:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны тынц Спасибо! Т.е., он (небезосновательно) приравнивает исключения к goto’s и предлагает "нудный" но надежный способ избавится от них. Joel SpolskyIn C/C++/Java style languages one way you can handle errors is to use the real return value for a result status, and if you have anything you want to return, use an OUT parameter to do that. This has the unforunate side effect of making it impossible to nest function calls, so result = f(g(x)) must become: Код: plaintext 1. 2. 3. 4. 5.
This is ugly and annoying but it’s better than getting magic unexpected gotos sprinkled throughout your code at unpredictable places. Кстати, оказывается, он еще и сооснователь Stack Overflow, пожалуй, самого эффективного ресурса (типа "вопрос-ответ") для разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 10:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LR, Со времен той статьи добавили спецификации исключений в деклараторы функций. Часть возражений Джоеля это снимает. Где то были еще мнения других важных людей. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 10:47 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRнебезосновательно) приравнивает исключения к goto’sда бросьте вы. Ерунда. Тут и обсуждать нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 10:55 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
по мимо немедленного возврата в точку обработки исключения. Само исключение сообщает нам о том, где это исключение было вызвано, возвращает стек и прочую вспомогательную информацию и может вернуть в общем то любые данные, если тип исключения пользовательский. А возврат -1 мне не говорит ровным счетом не о чем. Так как цепочка вызова могла быть огромной, да и в самом методе, не понятно, где собака зарыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 11:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRСпасибо! Т.е., он (небезосновательно) приравнивает исключения к goto’s и предлагает "нудный" но надежный способ избавится от них. У него еще и вот это: They create too many possible exit points for a function . To write correct code, you really have to think about every possible code path through your function. Every time you call a function that can raise an exception and don’t catch it on the spot, you create opportunities for surprise bugs caused by functions that terminated abruptly, leaving data in an inconsistent state, or other code paths that you didn’t think about. - я боязнь выделенного жирным встречал только у дельфистов, у которых до 2010-й версии RAD Studio не было оператора возврата из метода, и вследствие этого для них одна точка возврата - аксиома. А всё остальное даже не знаю, как комментировать. Программирование - это, в общем-то, такая штука, где всегда приходится really have to think about, и неважно, о чем - о возрате из функции, возможных исключениях, или еще о чем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 11:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123Ерунда. Тут и обсуждать нечего. Говорят, гризли - самый опасный зверь в Америке. Ерунда. Тут и обсуждать нечего. Я бросил в него восемь камней, а он мне даже ничего не сделал (в отличие от смотрителя зоопарка). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 11:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LR, )))) Ну дак тебе 6 мемберов сказали что он не опасен) Тогда ты белая ворона). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 11:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, раньше считалось, что те, кто используют GoTo деформируется профессионально. А сейчас идет обратная тенденция. =) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 12:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Исключения в C# реализованы через SEH. Сильные и слабые стороны этого механизма известны: достоинства: * позволяет писать удобный код, без бесконечных проверок if (f(x) == ERROR)... * позволяет ловить нештатные ошибки * позволяет финализировать блок кода * позволяет корректировать ошибки* недостатки * нагрузка на компилятор при создании try блока * тяжёлый нештатный выход из try блока - исключение или goto без leave Соответственно и область применения должны быть с учётом достоинств и недостатков. Обычный код с обычными действиями пользователей должен проверяться на ошибки. Нештатные вещи (допустим - открыли существующий файл, но пока диалог закрывался, файл удалён или заблокирован другим процессом) обрабатываются через исключения. Что касается того, что выбрать самому, то кроме выбора "исключение или код ошибки" есть и другие варианты. Например, тип Nullable - приятная фишка, что бы можно было возвращать значения через Return, но иметь возможность показать, что что-то пошло не так и избежать как громоздкого кода, так и исключения. --------------------- * - а кстати, много народу знает об этом? Если, к примеру, было деление на 0, можно в обработчике скорректировать ошибку, вернуться в точку выполнения, и продолжить выполнять код. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 12:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
13th* - а кстати, много народу знает об этом? Если, к примеру, было деление на 0, можно в обработчике скорректировать ошибку, вернуться в точку выполнения, и продолжить выполнять код. Похоже, что в C# аналога нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 12:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123Дядя Коля, Какая смешная просьба). У молодежи же нет авторитетов). Это в раздел ПТ надо). у этого авторитеты те кто книги пишет причем только заграничные ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 13:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttДядя Коля, При чём тут мнение? Не надо топить или не топить за исключения. Если в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения. Если в компанию в разработку на C# придёт хоть трижды авторитетный человек со своими кодами вместо исключений, то пойдёт сразу на рынок труда со всеми своими монатками и дебильным мнением. на шарпе как раз, он также считает про людей юзающих исключения (так же в смысле что они унтерменши в профессиональном плане) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 13:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя Коляна шарпе как раз, он также считает про людей юзающих исключения (так же в смысле что они унтерменши в профессиональном плане) Лучше ориентироваться на Рихтера, он всё конкретно по полочкам разложил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 13:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttЕсли в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения. Странно, раньше ты был другого мнения 20145877 hVosttИсключения не должны использоваться в ситуациях, которые ты ожидаешь. Например, некорректный ввод пользователя не должен порождать исключение. ... Возврат и обработка ошибок не стоит делать через механизм исключений. Об этом написано у многих уважаемых авторов. И с опытом приходит понимание почему. ... Я понимаю, что такие проверки делать лень, проще поймать обобщённый Exception и записать его в лог. Но это не показатель, ни качественной разработки, ни профессионализма. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 13:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Dima T, не вижу, как одна цитата противоречит другой ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 13:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Всё это фигня... Следует возвращать OperationResult да и вообще писать в функциональном стиле ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 14:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LR13th* - а кстати, много народу знает об этом? Если, к примеру, было деление на 0, можно в обработчике скорректировать ошибку, вернуться в точку выполнения, и продолжить выполнять код. Похоже, что в C# аналога нет... Если под аналогом понимаются exception filters, то в 6.0 они появились , и вполне можно написать вот такое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 15:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВсё это фигня... Следует возвращать OperationResult да и вообще писать в функциональном стиле а какие аргументы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 15:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Dima ThVosttЕсли в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения. Странно, раньше ты был другого мнения 20145877 hVosttИсключения не должны использоваться в ситуациях, которые ты ожидаешь. Например, некорректный ввод пользователя не должен порождать исключение. ... Возврат и обработка ошибок не стоит делать через механизм исключений. Об этом написано у многих уважаемых авторов. И с опытом приходит понимание почему. ... Я понимаю, что такие проверки делать лень, проще поймать обобщённый Exception и записать его в лог. Но это не показатель, ни качественной разработки, ни профессионализма. Мда. Чукча не читатель? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 15:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВсё это фигня... Следует возвращать OperationResult да и вообще писать в функциональном стиле Типа HttpResponseMessage? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 16:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAOperationResult Как-то рефакторили блок с этими Result-ами. Из-за того, что исключительные ошибки также в Result складывались. Когда кому-то надоело ковыряться и обрабатывать то, что непонятно как обрабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 16:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Марксизм не догма, а руководство к действию. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 16:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныЕсли под аналогом понимаются exception filters, то в 6.0 они появились , и вполне можно написать вот такое: Лично я имел ввиду именно возобновление исполнения. exception filters - часть этого механизма. В твоём примере делается повторный вызов. В С++ - возобновление с точки исключения. Прямых аналогов, насколько я знаю, нет нигде. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 16:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя КоляskyANAВсё это фигня... Следует возвращать OperationResult да и вообще писать в функциональном стиле а какие аргументы? Чистые функции. Легко тестировать. "Поезда" вызовов ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 18:23 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAВсё это фигня... Следует возвращать OperationResult да и вообще писать в функциональном стиле Типа HttpResponseMessage? Кстати простое отображение OperationResult на HttpResponseMessage с нужным кодом, вместо if-ов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 18:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, вчера, 21:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21547461][21547461] >...Если в компанию в разработку на C# придёт хоть трижды авторитетный человек со своими кодами вместо исключений, то пойдёт сразу на рынок труда со всеми своими монатками и дебильным мнением. Не могу с Вами согласиться. Многое зависит от задачи. Вот два примера: 1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации. 2. Вызов метода в рабочем потоке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 18:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации. Так возвращается пакет, а не код. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 18:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВМоисеев1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации. Так возвращается пакет, а не код.То есть не тупо -1 и фиг знает, что там произошло ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 18:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>hVostt, вчера, 21:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21547461][21547461] >...Если в компанию в разработку на C# придёт хоть трижды авторитетный человек со своими кодами вместо исключений, то пойдёт сразу на рынок труда со всеми своими монатками и дебильным мнением. Не могу с Вами согласиться. Многое зависит от задачи. Вот два примера: 1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации. 2. Вызов метода в рабочем потоке. hVostt 'у надо верить))). WCF прекрасно сериализует исключения на клиента. Ты не в курсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 18:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550572][21550572] >То есть не тупо -1 и фиг знает, что там произошло Здесь подробнее. Возвращается пакет, содержащий 2-х байтный код выполнения метода. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:09 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 18:51 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550618] [21550618] >hVostt'у надо верить))). Всё несколько сложнее, чем Вы представляете. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>Petro123, сегодня, 18:51 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550618] [21550618] >hVostt'у надо верить))). Всё несколько сложнее, чем Вы представляете. По топику видно, что идолов в IT нету. Всё на собственной шкуре, на собственной шкуре). Щас он придет и ему расскажешь почему ему не надо, а тебе надо верить)) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550572][21550572] >То есть не тупо -1 и фиг знает, что там произошло Здесь подробнее. Возвращается пакет, содержащий 2-х байтный код выполнения метода. Не интересно, потому как не читабельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:27 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, может сразу dump возвращать? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВМоисеев>skyANA, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550572][21550572] >То есть не тупо -1 и фиг знает, что там произошло Здесь подробнее. Возвращается пакет, содержащий 2-х байтный код выполнения метода. Не интересно, потому как не читабельно. Нажал Ctrl + F, ввёл WCF, получил 0. Классная иллюстрация вызова удалённого метода WCF, просто супер ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
теперь я понимаю, от куда порождаются ошибки типа окна с сообщением о том, что произошла ошибка неизвестная ошибка и программа должна быть закрыта =) по типу "Что то случилось". Частенько на такое натыкаюсь в говнокодах. Что, где и почему нужно определять с помощью хрустального шара. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAДядя Коляпропущено... а какие аргументы? Чистые функции. Легко тестировать. "Поезда" вызовов Исключения 1. легко писать 2. многие функции все равно используют исключения, как например работа с базой данных 3. поезда вызовов - не знаю что такое но похоже на стэк трейс думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 19:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman MejtesВМоисеев, может сразу dump возвращать? )))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 20:03 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 19:31 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550676][21550676] >Нажал Ctrl + F... Классная иллюстрация … Вы о чём? В статье так: Структура байтовой последовательности ответа в случае регистрации клиента Ошибка - (двухбайтовый код ошибки) Штатно - (0x00+0x00+IV)+[симметрично зашифрованное Info] Структура Info ответа для регистрации: [cmd клиента]+[guid аутентифицированного клиента]+[размер страницы]+[имя клиента] Структура байтовой последовательности для общего случая информационного запроса/ответа: Запрос: (КС+IV+индекс группы команд)+[Info] Структура Info запроса: [idxПакет+индекс команды в группе+параметры команды] Структура ответа: Ошибка - (двухбайтовый код ошибки) Штатно - (0x00+0x00+IV)+[Info] В общем случае Info ответа содержит результирующий набор данных в виде отсортированного массива строк... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 20:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Roman Mejtes, сегодня, 19:35 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550681][21550681] >Частенько на такое натыкаюсь в говнокодах. Вот и пятачок прорезался ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 20:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя КоляskyANAпропущено... Чистые функции. Легко тестировать. "Поезда" вызовов Исключения 1. легко писать 2. многие функции все равно используют исключения, как например работа с базой данных 3. поезда вызовов - не знаю что такое но похоже на стэк трейс думаю. Легко писать исключения? Интересно... Тогда о чём топик? Если для Вас просто и понятно где нужно исключение и какое, и как оно будет обрабатываться ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 20:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 19:31 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550676][21550676] >Нажал Ctrl + F... Классная иллюстрация … Вы о чём? В статье так: Структура байтовой последовательности ответа в случае регистрации клиента Ошибка - (двухбайтовый код ошибки) Штатно - (0x00+0x00+IV)+[симметрично зашифрованное Info] Структура Info ответа для регистрации: [cmd клиента]+[guid аутентифицированного клиента]+[размер страницы]+[имя клиента] Структура байтовой последовательности для общего случая информационного запроса/ответа: Запрос: (КС+IV+индекс группы команд)+[Info] Структура Info запроса: [idxПакет+индекс команды в группе+параметры команды] Структура ответа: Ошибка - (двухбайтовый код ошибки) Штатно - (0x00+0x00+IV)+[Info] В общем случае Info ответа содержит результирующий набор данных в виде отсортированного массива строк... И почему так? В чём плюсы? Кроме Вас с этим кто-то работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 20:37 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 20:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550771][21550771] >И почему так? В чём плюсы? Кроме Вас с этим кто-то работает? Система не 3-х уровневая, а 5-ти. Инфопакеты надо транспортировать между слоями, некоторым уровням не должно знать их структуру. Никто. Проект умер. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2018, 20:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевНе могу с Вами согласиться. Многое зависит от задачи. Вот два примера: 1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации. 2. Вызов метода в рабочем потоке. 1. Исключения это внутренний механизм. Несмотря на это они сериализуются и могут быть брошены внутри клиента если речь идёт об интеграции с внешним API. Например, служба внешнего файлового хранилища, вместо System.IO используется некий REST API. Проблемы отсутствия файлов, отсутствия доступа, проблемы с сетью, с работой самой службы (она даже код не сможет вернуть, если сломалась) -- никуда не делись. Пример не подходит. 2. В чём проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 00:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAКстати простое отображение OperationResult на HttpResponseMessage с нужным кодом, вместо if-ов :) Ну дык. А проблемы с сетью? Чтобы не разрываться между двух огней, правильно было бы в ответ на код ошибки таки выбросить исключения. Обёртка клиента, осуществляющая вызовы API не должна транслировать коды HTTP ошибок, если по уму. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 00:09 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 00:06 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21552946][21552946] >1. Исключения это внутренний механизм… Имеем цепочку: слой.1(клиент) <--> слой.2 <--> слой.3 <--> слой.4(сервер_приложений) <--> SQL_сервер. Обмен между слоями идет инфопакетами, которые в слое могут накапливаться в очередях. Ошибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д. >2. В чём проблема? В эффективности и удобстве. Имеем: 1. Запрос на построение выборки: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
2. Класс обработчик Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 02:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевИмеем цепочку: слой.1(клиент) <--> слой.2 <--> слой.3 <--> слой.4(сервер_приложений) <--> SQL_сервер. Обмен между слоями идет инфопакетами, которые в слое могут накапливаться в очередях. Ошибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д. В каждом слое могут быть свои ошибки. Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика? Плюс передавать по цепочке разнообразную информацию, которая может помочь правильно обработать ошибку, или хотя бы указать причину. ВМоисеев2. Класс обработчик ВМоисеев Код: c# 1.
ВМоисеев Код: c# 1.
Какой-то привет из девяностых, а не код. Отвратительный код, не понятно, что с этим wspErr делать, пользователю показывать ошибки СУБД? Даже если ваш заказчик/начальник понятия не имеет какого отвратительно качества код вы пишите, он всяко не обрадуется в UI сообщениям из СУБД. И вы уж не принимайте на свой личный счёт. Просто код настолько плох, что у нас даже младшие разработчики (джуниоры), так писать не будут, ибо это стыд и позор. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 03:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVostt, не переживай, он же написал, что проект умер и кроме нас его код никто и не видел ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 08:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAКстати простое отображение OperationResult на HttpResponseMessage с нужным кодом, вместо if-ов :) Ну дык. А проблемы с сетью? Чтобы не разрываться между двух огней, правильно было бы в ответ на код ошибки таки выбросить исключения. Обёртка клиента, осуществляющая вызовы API не должна транслировать коды HTTP ошибок, если по уму. А что проблемы с сетью? Почему правильно именно выбросить исключение? Его же кто-то должен будет обработать. А если ему по барабану на твои проблемы с сетью? Всё зависит от ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:14 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 20:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550771][21550771] >И почему так? В чём плюсы? Кроме Вас с этим кто-то работает? Система не 3-х уровневая, а 5-ти. Инфопакеты надо транспортировать между слоями, некоторым уровням не должно знать их структуру. Какая разница что не 3, а 5 слоёв? У меня к примеру их 9. В C# коде можете показать как выглядить Ваш Info-пакет? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевОшибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д.ВМоисеев Код: c# 1.
Код: c# 1. 2.
Код: c# 1. 2. 3.
И где тут "инфопакет(первый байт которого не 0)" и "очередь слоя.3"? Вижу только статическую строковую переменную, в которую пишется текст ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, а, я понял, Вы прямо в поток пишите массивы байт. В случае ошибки пишете к примеру new byte[2]{4,10} . Почему решили изобрести свой велосипед, а не взяли к примеру Protocol Buffers ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 09:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 03:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553231] [21553231] >... Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика?... Да. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой. >...Отвратительный код, не понятно, что с этим wspErr делать… Блестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением Понимаю, что жующие жёлуди, не заценят апельсин. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 11:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:25 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553322][21553322] >И где тут "инфопакет(первый байт которого не 0)" и "очередь слоя.3"?... Как то Вы всё в одну кучу. На это здесь привел два примера из разных систем, на мой взгляд делающие тезис hVostt не состоятельным. В первом случае нет возможности возвратить исключение, во втором - овчинка выделки не стоит, особенно в этом случае: await Task.Run(() =>wsp.Entity_SP("NCUYAO_GIS.get_ВД", asp, DbToRow)); ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 11:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA,сегодня, 09:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553329][21553329] >а, я понял, Вы прямо в поток пишите массивы байт… Не совсем так. В общем случае, обращение к другому слою есть вызов удаленного метода WCF сервиса этого слоя: byte[] wcf_Мд(byte[]); ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 11:57 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320] [21553320] >...В C# коде можете показать как выглядить Ваш Info-пакет?... Да ради бога: //======================================================================= //-- Виды сообщений-запросов, направляемых головному серверу репликации //======================================================================= //-- 1. Байтовая строка сообщения-запроса на получение временного параметра //-- idxСессия{1}+ivСообщения{8})+RSA(keyСессия){128})+Encoder(idxКласс{2}+idxМетод{2}){?} //-- idxСессия=(byte)255; //-- idxКласс=(short)0; //-- idxМетод=0 //-- 2. Байтовая строка сообщения-запроса на получение индекса сессии //-- idxСессия{1}+ivСообщения{8}+RSA(keyСессия){128}+Encoder(idxКласс{2}+idxМетод{2}+idxСессия{1}+ВП1{8}+ВП2{8}){?} //-- idxСессия(левая)=(byte)255; //-- idxСессия(правая)=(byte)? (0<=?<255); //-- idxКласс=(short)0; //-- idxМетод=(short)1 //-- ВП1 - время формирования головным сервером репликаций сообшения-ответа //-- ВП2 - время формирования периферийным сервером репликаций сообшения-запроса //-- 3. Байтовая строка сообщения-запроса на передачу сообщения от периферийного к головному //-- idxСессия{1}+ivСообщения{8}+Encoder(Компрессор(idxТип{1}+idxКласс{2}+idxМетод{2}+btПараметры{?}){?}){?} //-- idxТип=(byte)0; //-- idxСессия=(byte)? (0<=?<255); //-- idxКласс=(short)? //-- idxМетод=(short)? //-- 4. Байтовая строка сообщения-запроса на передачу сообщения от головного к периферийному //-- idxСессия{1}+ivСообщения{8}+Encoder(Компрессор(idxТип{1})){?} //-- idxТип=(byte)255; //-- 5. Байтовая строка ошибки //-- btErr{?} //-- btErr[0]!=(byte)0 //-- Виды сообщений-ответа, возвращаемых головным сервером репликации для периферийного сервера репликаций //-------------------------------------------------------------------------------------------------------- //-- 1. Не ошибка //-- btErr{1}+ivСообщения[8])+Encoder(Компрессор(idxКласс{2}+idxМетод{2}+btПараметры{?}){?}){?} //-- btErr[0]=0; //-- idxКласс=(short)? //-- idxМетод=(short)? //-- 2. Байтовая строка ошибки //-- btErr{?} //-- btErr[0]!=(byte)0 //-- Вид сообщений-запросов генерируемых сервером приложения для периферийного сервера репликаций //----------------------------------------------------------------------------------------------- //-- Info <-- Компрессор(idxКласс{2}+idxМетод{2}+btПараметры{?}){?} //-- idxКласс=(short)? //-- idxМетод=(short)? //-- Виды сообщений-ответа, возвращаемых периферийным сервером репликации для сервера приложения //-------------------------------------------------------------------------------------------------------- //-- 1. Не ошибка //-- btErr{1}=(byte)0; //-- 2. Байтовая строка ошибки //-- btErr{?} //-- btErr[0]!=(byte)0 или Вас интересует программный код формирования ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320][21553320] >Какая разница что не 3, а 5 слоёв? У меня к примеру их 9... Какую информацию Вы передаете между слоями? У меня упакованный шифрованный инфопакет (byte[]). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Исключения... коды возвратов.... с рукожопами что делать? 1) Вчера качаю мозиллой файл, кончается место на целевом диске. Если открыть список, напротив закачки появляется Failed. И все. Хрен знает, в чем проблема, думал сервер не отдает, пытался перезапускать, открывал заново и начинал качать заново, прежде чем дошло. 2) Сегодня передаю файл через TeamViewer. В целевой папке такой файл уже есть, я расчитывал просто подтверить перезапись. Хрен. Никаких ошибок, висит задание, прогресс 0%, никаких сообщений. А ведь это не студенческие поделки.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>hVostt, сегодня, 03:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553231] [21553231] >... Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика?... Да. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой. >...Отвратительный код, не понятно, что с этим wspErr делать… Блестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением Понимаю, что жующие жёлуди, не заценят апельсин. Нет, код реально не читаемый и плохой. Почитайте что-нибудь по принципы проектирования кода, про чистый код, красивый код, совершенный код, идеальный код. Написано об этом для инженеров, а не свиней, про которых Вы тут нелепо намекаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProИсключения... коды возвратов.... с рукожопами что делать? 1) Вчера качаю мозиллой файл, кончается место на целевом диске. Если открыть список, напротив закачки появляется Failed. И все. Хрен знает, в чем проблема, думал сервер не отдает, пытался перезапускать, открывал заново и начинал качать заново, прежде чем дошло. 2) Сегодня передаю файл через TeamViewer. В целевой папке такой файл уже есть, я расчитывал просто подтверить перезапись. Хрен. Никаких ошибок, висит задание, прогресс 0%, никаких сообщений. А ведь это не студенческие поделки.... Что делать, что делать. Таски заводить на исправление ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320][21553320] >Какая разница что не 3, а 5 слоёв? У меня к примеру их 9... Какую информацию Вы передаете между слоями? У меня упакованный шифрованный инфопакет (byte[]). Разную. И текстовую, и бинарную. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:47 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
И шифрованную ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 12:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, а зачем ты эту портянку передаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 12:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553631][21553631] >Нет, код реально не читаемый и плохой. 1. Хороший, плохой... Где критерии. Приведите Ваш код. Задача то хорошо формализована - получить выборку из базы, вызвав хранимую процедуру в ней. 2. Не я начинаю ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 12:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553669][21553669] >И шифрованную… Как? У меня обмен информацией в следующим слоем есть вызов удаленного метода WCF_сервиса: byte[] wcf_Мд(byte[]); Метод возвратит либо ошибку, либо полезную информацию. У Вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 12:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553631][21553631] >Нет, код реально не читаемый и плохой. 1. Хороший, плохой... Где критерии.Принципы SOLID, тестируемость, читаемость... ВМоисеевПриведите Ваш код. Задача то хорошо формализована - получить выборку из базы, вызвав хранимую процедуру в ней.Приводил уже и Вам понравилось: 20604487 ВМоисеев2. Не я начинаюИменно Вы переходите на личности, хотя критика звучит в сторону кода, а не Вас лично. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>ViPRos, сегодня, 13:18 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553721][21553721] >а зачем ты эту портянку передаешь? Вы о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:47 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 12:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553669][21553669] >И шифрованную… Как?Да по разному... на базе MD5, SHA-1, SHA-256, RNG и RSA ВМоисеевУ меня обмен информацией в следующим слоем есть вызов удаленного метода WCF_сервиса: byte[] wcf_Мд(byte[]); Метод возвратит либо ошибку, либо полезную информацию. У Вас?Есть и WCF, и REST API, и очереди... Сейчас вот GraphQL пробуем, там ExecutionResult ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 13:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 13:45 >Принципы SOLID, тестируемость, читаемость.. >Приводил уже и Вам понравилось:... Рассматривая Ваш код, не понимаю, в каком потоке он будет выполняться и смогу ли показать ПрогресБар в UI потоке. Не понимаю, как формируется контекст. Какую программную гирю Вы добавляете в Ваш код, EF? Но не называю этот код плохим или … Вам же показываю рабочий код. >Именно Вы переходите на личности… Вы не внимательно читали Трех мушкетёров Дюма. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:05 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 13:56 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553777][21553777] >Есть и WCF, и REST API, и очереди… Да меня не это интересует. Есть клиент, обменивающийся информацией с географически удаленным 1-ым слоем. Что есть обмен? У меня byte[] wcf_Мд(byte[]); У Вас что? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 13:45 >Принципы SOLID, тестируемость, читаемость.. >Приводил уже и Вам понравилось:... Рассматривая Ваш код, не понимаю, в каком потоке он будет выполняться и смогу ли показать ПрогресБар в UI потоке. Не понимаю, как формируется контекст. Какую программную гирю Вы добавляете в Ваш код, EF? Показать ProgressBar сможете показать. Гирь там нет, там же написано: Код: c# 1.
Хорошо, для Вас напишу так, чтобы было понятнее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 13:56 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553777][21553777] >Есть и WCF, и REST API, и очереди… Да меня не это интересует. Есть клиент, обменивающийся информацией с географически удаленным 1-ым слоем. Что есть обмен? У меня byte[] wcf_Мд(byte[]); У Вас что? Сигнатура метода что-ли нужна? Их не один. Ну к примеру простое получение списка валют: Task<List<Currency>> GetCurrenciesAsync(). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 14:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 14:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553838][21553838] >Хорошо, для Вас напишу так, чтобы было понятнее: Мне понятнее не стало. У меня для полного описания решения задачи получения выборки из базы данных хранимой процедурой, к надо добавить только класс сущности, который обычно определяется внутри другого класса: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
И это всё, и никаких дополнительных библиотек. Есть некоторые тонкости - в базе широта и долгота хранится не формате float, и сущность не совпадает со строкой выборки, ну а в остальном, прекрасная маркиза... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAА что проблемы с сетью? Почему правильно именно выбросить исключение? Его же кто-то должен будет обработать. А если ему по барабану на твои проблемы с сетью? Всё зависит от При любой возможности обойтись без исключений, конечно надо без них обходиться. Если ошибка определена логикой, например, валидация, отсутствие данных, отсутствие прав и т.д. Это нужно проверять и реагировать соответственно. Конечно зависит от. Но превращать исключительные ситуации в коды возврата, игнорируя механизмы исключений, которые дают больше информации об ошибке и месте её возникновения, считаю неправильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевДа. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой. Почему нельзя? ВМоисеевБлестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением Там дело не исключениях. А в умышленном вредительстве. ВМоисеевПонимаю, что жующие жёлуди, не заценят апельсин. Просил же на свой счёт не принимать. Или теперь поклоняться говнокодерам, ибо они пишут от бога, и чтобы понять их творчество надо перейти на определённый уровнь, с помощью зверской наркоты, так чтоли? )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:42 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 14:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553838][21553838] >Хорошо, для Вас напишу так, чтобы было понятнее: Мне понятнее не стало. У меня для полного описания решения задачи получения выборки из базы данных хранимой процедурой, к надо добавить только класс сущности, который обычно определяется внутри другого класса: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
И это всё, и никаких дополнительных библиотек. Есть некоторые тонкости - в базе широта и долгота хранится не формате float, и сущность не совпадает со строкой выборки, ну а в остальном, прекрасная маркиза... Что конерктно Вам не понятно в том, как получается выборка из базы? Получается она также как и у Вас: через OracleCommand, без дополнительных библиотек. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAА что проблемы с сетью? Почему правильно именно выбросить исключение? Его же кто-то должен будет обработать. А если ему по барабану на твои проблемы с сетью? Всё зависит от При любой возможности обойтись без исключений, конечно надо без них обходиться. Если ошибка определена логикой, например, валидация, отсутствие данных, отсутствие прав и т.д. Это нужно проверять и реагировать соответственно. Конечно зависит от. Но превращать исключительные ситуации в коды возврата, игнорируя механизмы исключений, которые дают больше информации об ошибке и месте её возникновения, считаю неправильным. Амн, какие ещё коды возврата? Выше давал ссылку на https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionResult.cs Где там игнорируются механизмы, что дают больше информации об ошибке и месте её возникновения? Вот ещё пример: http://docs.couchbase.com/sdk-api/couchbase-net-client-2.4.7/html/bd17533f-918e-a167-40ae-89be88a341be.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 16:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAАмн, какие ещё коды возврата? Ну речь-то про них шла с начала топика :) skyANAВыше давал ссылку на https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionResult.cs Где там игнорируются механизмы, что дают больше информации об ошибке и месте её возникновения? Клиент, осуществляющий доступ к API, мог бы инициировать своё исключение при получении структуры, у которой заполнены Errors. Но не обязан, это и правда зависит от того как это используется, и не запарит ли разработчиков при каждом чихе ковырять эту структуру на предмет наличия ошибок. skyANAВот ещё пример: http://docs.couchbase.com/sdk-api/couchbase-net-client-2.4.7/html/bd17533f-918e-a167-40ae-89be88a341be.htm Тоже самое. Тем более, лично я считаю, что надо разделять низкоуровневый API и высокоуровневый. Низкоуровневый возвращает OperationResult, высокоуровневый сразу нужный результат или исключение. Но так как, именно в этом случае, результат это больше, чем Value, то совместили. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 17:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttчто надо разделять низкоуровневый API и высокоуровневый. Низкоуровневый возвращает OperationResult Имеется в виду клиент API (н-р, Couchbase.NetClient.dll) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 17:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 16:42 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554058][21554058] >Почему нельзя? Дело в том, что 3-й слой является временным хранилищем информационных пакетов запросов/ответов. Сервисы 2-го уровня записывают пакеты запроса в хранилище 3-го уровня, используя вызов удаленного метода и ждут инфопакета результата запроса. Сервисы 4-го уровня (пул серверов приложений) забирают пакет из хранилища и реализуют обработку запроса и записывают пакет результата (ответа) на место пакета запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 18:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПочему нельзя? Потому как сделал человек так, как сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 18:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 16:48 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554069][21554069] >Что конерктно Вам не понятно в том, как получается выборка из базы? Где задаётся описание строки выборки, где задается описание сущности, где задаётся код отражения строки на сущность, где задаётся поток в котором выполняется обработка запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 18:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAВыше давал ссылку на https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionResult.cs Где там игнорируются механизмы, что дают больше информации об ошибке и месте её возникновения?Клиент, осуществляющий доступ к API, мог бы инициировать своё исключение при получении структуры, у которой заполнены Errors. Но не обязан, это и правда зависит от того как это используется, и не запарит ли разработчиков при каждом чихе ковырять эту структуру на предмет наличия ошибок. skyANAВот ещё пример: http://docs.couchbase.com/sdk-api/couchbase-net-client-2.4.7/html/bd17533f-918e-a167-40ae-89be88a341be.htm Тоже самое. Тем более, лично я считаю, что надо разделять низкоуровневый API и высокоуровневый. Низкоуровневый возвращает OperationResult, высокоуровневый сразу нужный результат или исключение. Но так как, именно в этом случае, результат это больше, чем Value, то совместили.При каждом чихе ковырять? Если всё штатно работает, то ничего ковырять и не надо, а если возникла внештатная ситуация, считай исключение, то ковырять ровно столько же, что и при подходе с исключениями. Другой вопрос, а должна-ли как-то отражаться на работе приложения какая-либо аварийная ситуация в Couchbase, должно-ли оно об этом сигнализировать? ИМХО не должна, так как логика не зависит от Couchbase. А сигнализирует хелсчек. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 19:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 16:48 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554069][21554069] >Что конерктно Вам не понятно в том, как получается выборка из базы? Где задаётся описание строки выборки, где задается описание сущности, где задаётся код отражения строки на сущность, где задаётся поток в котором выполняется обработка запроса. Хорошо, давайте возьмём Ваш код и перепишем, реализуя для простоты интерфейс: Код: c# 1. 2. 3. 4.
Получаем в первом приближении: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
И используем: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:14 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, метод Ask по сути одинаков для всех реализаций IQuery на базе OracleClient , так что выносим его в базовый класс OracleQuery плюс private методы делаем protected , и получаем: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Поправил: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Поправил: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAПри каждом чихе ковырять? Если всё штатно работает, то ничего ковырять и не надо, а если возникла внештатная ситуация, считай исключение, то ковырять ровно столько же, что и при подходе с исключениями. В смысле? Вот API при успешном результате возвращает некий объект, а при неуспешном null, это исключительная ситуация, если у меня таких вызовов очень много, код будет кишить if...else, я могу поставить обработку исключений, так как зачастую исключение означает, что ты мало что можешь сделать полезного, кроме как уведомить, записать в лог, и вернуть состояние к тому как было. Зачем мне этот шквал проверок, а не сломалось ли чего, если оно не должно ломаться. Опять таки, я говорю не про штатные ошибки, типа кривого ввода, или нарушение каких-то бизнес-правил. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttя могу поставить обработку исключений * на блок кода, а не для каждого вызова ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 20:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAДругой вопрос, а должна-ли как-то отражаться на работе приложения какая-либо аварийная ситуация в Couchbase, должно-ли оно об этом сигнализировать? ИМХО не должна, так как логика не зависит от Couchbase. А сигнализирует хелсчек. Сломаться может посередине многоступенчатого процесса. И что тогда? Опять таки, на стороне Couchbase может и не быть проблем, проблемы могут быть в некорректном коде вызова, который привёл к ошибке, очевидно это ошибка программиста. Он что сам себя страхует миллионом if...else? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 21:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 20:14 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554332][21554332] >И используем: Спасибо. Но остаюсь при своём. Потом, не нашёл определение Entity, а по сему код в private Entity ToResult(IDataRecord record) подвисает в воздухе. В моём варианте методы класса обслуживают все запросы хранимых процедур. И где обработка не штатных ситуаций, и в каком потоке работает Ваш код? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 21:15 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAИ используем: Код: c# 1. 2. 3. 4. 5.
ээхх... если не привить человеку потребность и понимание качественной разработки, то уже нет смысла учить и показывать как это делать. это не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 21:34 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 20:14 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21554332][21554332] >И используем: Спасибо. Но остаюсь при своём. Потом, не нашёл определение Entity, а по сему код в private Entity ToResult(IDataRecord record) подвисает в воздухе. В моём варианте методы класса обслуживают все запросы хранимых процедур. И где обработка не штатных ситуаций, и в каком потоке работает Ваш код? Мда, могли бы и догадаться, что Entity - это Ваш тип row_Entity, просто подрихтованный. Обработка не штатных ситуаций? А где она у Вас? try catch и Message в переменную? Дак заверните, где Вам угодно. В каком потоке? Аналогично Вашему коду. Я прекрасно понимаю, что делает Ваш код. И пишу, что эту задачу решил бы иначе, чтобы ослабить зацепление, усилить связности и избежать проблем с сопровождением и тестированием. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 23:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAПри каждом чихе ковырять? Если всё штатно работает, то ничего ковырять и не надо, а если возникла внештатная ситуация, считай исключение, то ковырять ровно столько же, что и при подходе с исключениями. В смысле? Вот API при успешном результате возвращает некий объект, а при неуспешном null, это исключительная ситуация, если у меня таких вызовов очень много, код будет кишить if...else, я могу поставить обработку исключений, так как зачастую исключение означает, что ты мало что можешь сделать полезного, кроме как уведомить, записать в лог, и вернуть состояние к тому как было. Зачем мне этот шквал проверок, а не сломалось ли чего, если оно не должно ломаться. Опять таки, я говорю не про штатные ошибки, типа кривого ввода, или нарушение каких-то бизнес-правил.на практике код не кишит if...else, нет шквала проверок так как действительно мало, что можешь сделать, да и не требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 23:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAИ используем: Код: c# 1. 2. 3. 4. 5.
ээхх... если не привить человеку потребность и понимание качественной разработки, то уже нет смысла учить и показывать как это делать. это не работает.думаю если бы проект не умер, то через годик другой он бы сам осознал, что представляет из себя его блестящий код Классика ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 23:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAЧто делать, что делать. Таски заводить на исправление Толку то. Это подход. Люди просто забили на обработку исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 05:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAЧто делать, что делать. Таски заводить на исправление Толку то. Это подход. Люди просто забили на обработку исключений.Зачем их обрабатывать? Их надо логировать , по возможности где-то в одном месте. А обрабатывать, обычно, только с целью добавления диагностической информации . Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 06:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КЗачем их обрабатывать? Их надо логировать , по возможности где-то в одном месте. А обрабатывать, обычно, только с целью добавления диагностической информации .То есть пользователю причину знать необязательно? )) Еще раз - такие проблемы как а) кончилось место на диске б) файл с таким именем уже существует вместо выдачи какого-то сообщения для пользователя привели к введению приложения в ступор. Ну и какие логи должен смотреть рядовой пользователь? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 06:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAЧто делать, что делать. Таски заводить на исправление Толку то. Это подход. Люди просто забили на обработку исключений. Что значит забили? В предыдущих версиях Mozilla и TeamViewer обрабатывали, а потом забили? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 06:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA, Хрен знает. Я вот как пользователь столкнулся с фактом. Проводить всякие тесты на локализацию проблемы желания не было. Я к тому, что это последнее время стало общим местом, и чем дальше - тем хуже. Тут купил новый бук с Win10 - вообще охреневаю от невменяемости диагностических сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 07:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProАлексей КЗачем их обрабатывать? Их надо логировать , по возможности где-то в одном месте. А обрабатывать, обычно, только с целью добавления диагностической информации .То есть пользователю причину знать необязательно? )) Еще раз - такие проблемы как а) кончилось место на диске б) файл с таким именем уже существуетЯ как раз и написал про добавление диагностической информации. См. красный текст и пример кода. Shocker.Proвместо выдачи какого-то сообщения для пользователя привели к введению приложения в ступор. Ну и какие логи должен смотреть рядовой пользователь?MessageBox на экране для пользователя я рассматриваю как один из вариантов логирования. Если такой подход кажется слишком необычным, то я не настаиваю, можно обозвать отображение MessageBox другим словом. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 07:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProТо есть пользователю причину знать необязательно? )) Ты забыл или не знал что причины делятся на уровни. Некоторые надо. А некоторые не надо т.к. нужен только Факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 07:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123Ты забыл или не знал что причины делятся на уровни.По моему опыту, исключения делятся на две больших категории - внутренние ошибки программы, тогда пользователю выдается типа "что-то сломалось", "отправить проблему разработчику" и т.п. - пользовательские, когда пользователю показывается вменяемое или относительно вменяемое сообщение "сервер недоступен (с кнопочкой "подробнее")", "ошибка записи файла (а лучше с расшифровкой)" и т.п., предполагается, что пользователь может попытаться сам исправить проблему. К сожалению, это мало кто стал делать, в современных программах. Хотя еще лет десять назад я видел по косвенным признакам, что разрабы делали такое разделение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 07:37 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.Pro, Да. Только сейчас произошла катастрофа. Пришел веб. А там правила другие. Большинство исключений не стало нужно выводить юзверю. Ну, зацепило и десктоп. И операционки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 07:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAна практике код не кишит if...else, нет шквала проверок так как действительно мало, что можешь сделать, да и не требуется Ну это понятно, что на практике вызовов мало, что это проблемы не вызывает. Для наших микро-сервисов мы используем Swagger и AutoRest, который генерит низкоуровневый API клиент, т.е. именно OperationResult. Его использовать напрямую неудобно. Даже если вызовов мало, это требует большего контроля со стороны разработчиков, поэтому пишутся высокоуровневые обёртки, которые во-первых убирают прямую зависимоть от конкретного генератора, и скрывают подробности реализации. Потребители не знают, что там, REST, SOAP или что-то ещё. По личному опыту, так получается лучше, чище, и удобней. При ошибках бросаются исключения, они документируются, решарпер подсказывает, что здесь может быть ошибка, контракты работают хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProskyANA, Хрен знает. Я вот как пользователь столкнулся с фактом. Проводить всякие тесты на локализацию проблемы желания не было. Я к тому, что это последнее время стало общим местом, и чем дальше - тем хуже. Тут купил новый бук с Win10 - вообще охреневаю от невменяемости диагностических сообщений. Дак давайте обратную связь вендору. Понижайте его NPS. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAна практике код не кишит if...else, нет шквала проверок так как действительно мало, что можешь сделать, да и не требуется Ну это понятно, что на практике вызовов мало, что это проблемы не вызывает. Для наших микро-сервисов мы используем Swagger и AutoRest, который генерит низкоуровневый API клиент, т.е. именно OperationResult. Его использовать напрямую неудобно. Даже если вызовов мало, это требует большего контроля со стороны разработчиков, поэтому пишутся высокоуровневые обёртки, которые во-первых убирают прямую зависимоть от конкретного генератора, и скрывают подробности реализации. Потребители не знают, что там, REST, SOAP или что-то ещё. По личному опыту, так получается лучше, чище, и удобней. При ошибках бросаются исключения, они документируются, решарпер подсказывает, что здесь может быть ошибка, контракты работают хорошо. Так, давай разберём. Вот отвалился микросервис, то есть к примеру operationResult.Success - false, operationResult.StatusCode - TransportFailed, operationResult.Exception - все подробности о произошедшем И что ты будешь делать? Кидать своё исключение, куда завернёшь operationResult.Exception? При отвал отдельного микросервиса не должен приводить к отвалу системы в целом. То есть надо перехватить своё же исключение и, грубо говоря, завернуть предварительно залогировав. Не, ну можно конечно, но по мне так оверхед. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAКидать своё исключение, куда завернёшь operationResult.Exception ?Да хоть в самодельное свойство, хоть в InnerException... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAТо есть надо перехватить своё же исключение и, грубо говоря, завернуть предварительно залогировав.Зачем? Логирование, стандартно, организовать где-нибудь на уровне системной библиотеки, используемой для коммуникации (WebAPI, WCF и т. п.). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:34 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВот отвалился микросервис, то есть к примеру operationResult.Success - false, operationResult.StatusCode - TransportFailed, operationResult.Exception - все подробности о произошедшем И что ты будешь делать? Ну во-первых, высокоуровневое API, может сделать что-то исходя из того, что работает с OperationResult, может попробовать ещё раз, или использовать другое подключение или что-то ещё. Потребитель высокоуровневого API ожидает, что операция будет выполнена точно также как любой вызов любого интерфейса в проекте. А если вызов не удался, по любым причинам, то сломаться должна вся цепочка, вплоть до прикладного кода, и где-то должно перехватиться исключение, чтобы вернуть систему в изначальное состояние, удалить какие-нибудь временные файлы, откатить транзакции и т.д. и т.п. Для чего потребителю знать Success или не Success? Просто я пока не понимаю, в чём профит работать с OperationResult повсеместно, а не на стыке (низкоуровневый API клиент). А также, ты предлагаешь жить теперь с двумя механизмами обработки ошибок: с исключениями и OperationResult, или уже вовсе от исключений отказываться совсем и перехватывать их везде и всегда, чтобы затолкать в свой OperationResult, привет двухтысячные, как по мне. skyANAТо есть надо перехватить своё же исключение и, грубо говоря, завернуть предварительно залогировав. Да, но отлавливать ты его можешь через множество вызовов с раскруткой стека, допустим, на уровне модуля, или приложения. И фильтровать исключения, какие ты можешь обработать по месту, а какие нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAКидать своё исключение, куда завернёшь operationResult.Exception? Ну Inner-же.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123Только сейчас произошла катастрофа. Пришел веб. А там правила другие. Большинство исключений не стало нужно выводить юзверю. Ну, зацепило и десктоп. И операционки.Правила отображения ошибки зависят не от Web или неWeb , а от аудитории, использующей программу: корпоративное ПО, ПО для народных масс и т. п. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КPetro123Только сейчас произошла катастрофа. Пришел веб. А там правила другие. Большинство исключений не стало нужно выводить юзверю. Ну, зацепило и десктоп. И операционки.Правила отображения ошибки зависят не от Web или неWeb , а от аудитории, использующей программу: корпоративное ПО, ПО для народных масс и т. п. Конечно. Я указал ему только один аспект. Их много. Кстати именно веб расширил указанный тобой критерий. Раньше ПО писалось корпоративное. И ошибки райзе слались наверх к самому exe'шнику. В веб низзззяяяя). Поэтому про логирование я с вами согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 08:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КskyANAКидать своё исключение, куда завернёшь operationResult.Exception ?Да хоть в самодельное свойство, хоть в InnerException... Да понятно, но зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 09:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAКидать своё исключение, куда завернёшь operationResult.Exception? Ну Inner-же.. Да понятно, но зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 09:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КskyANAТо есть надо перехватить своё же исключение и, грубо говоря, завернуть предварительно залогировав.Зачем? Логирование, стандартно, организовать где-нибудь на уровне системной библиотеки, используемой для коммуникации (WebAPI, WCF и т. п.). Вот я и говорю: Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 09:47 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAДа понятно, но зачем? В смысле, зачем? Давай вот такой пример. Распределённый кеш. https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.caching.distributed.idistributedcache?view=aspnetcore-2.1 Ты считаешь, что интерфейс спроектирован не лучшим образом, и методы типа Get(String) должны возвращать OperationResult, ведь очевидно, что реализация будет скорее всего использовать сетевые API, откуда будут приходить структуры, содержащие значение, статус выполнения и прочее? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 09:57 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAВот отвалился микросервис, то есть к примеру operationResult.Success - false, operationResult.StatusCode - TransportFailed, operationResult.Exception - все подробности о произошедшем И что ты будешь делать? Ну во-первых, высокоуровневое API, может сделать что-то исходя из того, что работает с OperationResult, может попробовать ещё раз, или использовать другое подключение или что-то ещё.Хм, пишешь декораторы Circuit Breaker и Retry, при конфигурации IoC контейнера указываешь, что использовать. hVosttПотребитель высокоуровневого API ожидает, что операция будет выполнена точно также как любой вызов любого интерфейса в проекте. А если вызов не удался, по любым причинам, то сломаться должна вся цепочка, вплоть до прикладного кода, и где-то должно перехватиться исключение, чтобы вернуть систему в изначальное состояние, удалить какие-нибудь временные файлы, откатить транзакции и т.д. и т.п.Зависит от. Отвалился Couchbase, ну и фиг бы с ним, там кэш. Лезем напрямую в БД. Чуть медленнее получим данные, но зато пользователи продолжают работать. hVosttДля чего потребителю знать Success или не Success?Тупо для того, чтобы понять по какой ветке идти. В случае с кэшем для того, чтобы понять получил ты нужные данные, или надо в БД лезть. hVosttПросто я пока не понимаю, в чём профит работать с OperationResult повсеместно, а не на стыке (низкоуровневый API клиент). А также, ты предлагаешь жить теперь с двумя механизмами обработки ошибок: с исключениями и OperationResult, или уже вовсе от исключений отказываться совсем и перехватывать их везде и всегда, чтобы затолкать в свой OperationResult, привет двухтысячные, как по мне.Не не, я пока не предлагаю это делать повсеместно hVosttskyANAТо есть надо перехватить своё же исключение и, грубо говоря, завернуть предварительно залогировав. Да, но отлавливать ты его можешь через множество вызовов с раскруткой стека, допустим, на уровне модуля, или приложения. И фильтровать исключения, какие ты можешь обработать по месту, а какие нет.Опять же рассмотрим случай с кэшем. Ну зачем мне там кидать свои исключения, чтобы потом их ловить? С кэшем проблемы (operationResult не Success) - идём в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 09:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAДа понятно, но зачем? В смысле, зачем? Давай вот такой пример. Распределённый кеш. https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.caching.distributed.idistributedcache?view=aspnetcore-2.1 Ты считаешь, что интерфейс спроектирован не лучшим образом, и методы типа Get(String) должны возвращать OperationResult, ведь очевидно, что реализация будет скорее всего использовать сетевые API, откуда будут приходить структуры, содержащие значение, статус выполнения и прочее? Не, с этим всё в порядке, а вот DistributedCache.Client пусть возвращает OperationResult ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAХм, пишешь декораторы Circuit Breaker и Retry, при конфигурации IoC контейнера указываешь, что использовать. Ну понятно, что "высокоуровневый клиент API", это декоратор. Таки в декораторах ты предлагаешь уже бросать исключения? skyANAЧуть медленнее получим данные, но зато пользователи продолжают работать. Верно, но это уже при декорировании. skyANAТупо для того, чтобы понять по какой ветке идти. В случае с кэшем для того, чтобы понять получил ты нужные данные, или надо в БД лезть. Это при декорировании? Или потребителю службы отдать все потроха результата выполнения? :) skyANAНе не, я пока не предлагаю это делать повсеместно ..пока?? Таки что ты имел в виду, говоря про функциональный подход в этом случае? skyANAОпять же рассмотрим случай с кэшем. Ну зачем мне там кидать свои исключения, чтобы потом их ловить? С кэшем проблемы (operationResult не Success) - идём в БД. Если ты реализуешь GetOrAdd, то потребителю не нужно будет знать вообще про то, что кеш отваливается, это зачем ему? Тем более, кеш может использовать интенсивно, а проверки результата сильно увеличивают связанность. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAНе, с этим всё в порядке, а вот DistributedCache.Client пусть возвращает OperationResult Ну дык, об этом и речь. А как иначе? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAНе, с этим всё в порядке, а вот DistributedCache.Client пусть возвращает OperationResult Ну дык, об этом и речь. А как иначе? О, консенсус! За это надо выпить ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:11 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttТем более, кеш может использовать интенсивно, а проверки результата сильно увеличивают связанность. Вот этого не понял... Связность характеризует то, насколько хорошо все методы класса или все фрагменты метода соответствуют главной цели, - иначе говоря, насколько сфокусирован класс © Макконнелл, 2010. О чём ты? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:14 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAСвязность характеризует то, насколько хорошо все методы класса или все фрагменты метода соответствуют главной цели, - иначе говоря, насколько сфокусирован класс © Макконнелл, 2010. Связ А нность. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:16 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA, tight coupling ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAСвязность характеризует то, насколько хорошо все методы класса или все фрагменты метода соответствуют главной цели, - иначе говоря, насколько сфокусирован класс © Макконнелл, 2010. Связ А нность. Ой, бл*, в глаза балуюсь Ты про coupling. Всё равно не понял. Тебе так, или иначе надо проверять результат, что вернулся из кэша. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:19 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВсё равно не понял. Тебе так, или иначе надо проверять результат, что вернулся из кэша. Для потребителя значение либо есть в кеше, либо нет. Остальное, либо ошибка, либо какая-то скрытая обработка. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 10:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAВсё равно не понял. Тебе так, или иначе надо проверять результат, что вернулся из кэша. Для потребителя значение либо есть в кеше, либо нет. Остальное, либо ошибка, либо какая-то скрытая обработка. Именно. Есть в кеше - используем. Нет, ошибка, проблемы с нодой - потребитель на фиг не важно, он идёт за данными в базу. То есть если DistributedCache.Client возвращает operationResult.Success, то берём operationResult.Value и используем. Не Success - идём в базу. При этом не надо тут генерировать никаких исключений и героически их обрабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 17:23 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAТо есть если DistributedCache.Client возвращает operationResult.Success, то берём operationResult.Value и используем. Не Success - идём в базу. При этом не надо тут генерировать никаких исключений и героически их обрабатывать. В 1000 мест мне нужно работать с кешем и в 1000 мест я вынужден проверить Success. Но с кешем понятно, это не критичный участок, а если это распределённое файловое хранилище, например. Мне нужно получить или сохранить файл, очень много где, зачем мне этот OperationResult, мне удобно работать с файлами, как с System.IO, ошибки путь сваливают весь код, ибо он не имеет смысла без файлов, и ничего нельзя сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 09:19 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAТо есть если DistributedCache.Client возвращает operationResult.Success, то берём operationResult.Value и используем. Не Success - идём в базу. При этом не надо тут генерировать никаких исключений и героически их обрабатывать. В 1000 мест мне нужно работать с кешем и в 1000 мест я вынужден проверить Success. Но с кешем понятно, это не критичный участок, а если это распределённое файловое хранилище, например. Мне нужно получить или сохранить файл, очень много где, зачем мне этот OperationResult, мне удобно работать с файлами, как с System.IO, ошибки путь сваливают весь код, ибо он не имеет смысла без файлов, и ничего нельзя сделать.И откуда ты взял эти 1000 мест? Пишется декоратор и ты работаешь с repository, или query как обычно, просто при конфигурации IoC контроллера указываешь, что заверните-ка мне это в CacheDecorator. Работа с файлами тоже разная бывает. К примеру пользователь заливает js под видом картинки. Можно кинуть ему исключение "Нельзя, козлина!", героически его поймать и вывести "Ай, ай, ай". А можно operationResult.StatusCode = StatusCode.NotAllowed. Но сваливать весь код уж точно не стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 10:22 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAИ откуда ты взял эти 1000 мест? Пишется декоратор и ты работаешь с repository, или query как обычно, просто при конфигурации IoC контроллера указываешь, что заверните-ка мне это в CacheDecorator. Ну мы уже выяснили, что таки делаем декоратор, и при ошибках бросаем исключения, если это требуется. Если компонент не влияет критически на работу приложения, то ошибки игнорируются, например, для кеша Get отдаёт всегда null, а GetOrAdd возвращает значение из переданной фабрики. skyANAРабота с файлами тоже разная бывает. К примеру пользователь заливает js под видом картинки. Можно кинуть ему исключение "Нельзя, козлина!", героически его поймать и вывести "Ай, ай, ай". А можно operationResult.StatusCode = StatusCode.NotAllowed. А вот здесь ты как раз путаешь валидацию с ошибками. Попытка внести данные, нарушающие целостность СУБД, это ошибка. При чём ошибка программиста, который не удосужился проверить данные перед тем, как их сохранять, не обеспечил условия. Здесь так же. Если же даже после валидации ошибка возникла, то это исключительная ситуация, которую не нужно пытаться свести к валидации и показывать пользователю. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAНо сваливать весь код уж точно не стоит Стоит, так как программист не выполнил нужные действия, значит это надо чинить. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVostt, короче бессмысленный какой-то спор Всё зависит от ситуации, архитектуры приложения и требований. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 12:23 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAhVostt, короче бессмысленный какой-то спор Всё зависит от ситуации, архитектуры приложения и требований. Ну почему. При выставлении API наружу, механизм исключений не будет работать, поэтому ты упаковываешь результат в OperationResult. Если ты проектируешь интерфейсы и классы не для внешнего API, то у тебя есть механизм исключений, которым нужно пользоваться, а не городить ещё один механизм. Как бы понятно, it depends, но ключевые тезисы никто не отменял :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 12:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПри выставлении API наружу, механизм исключений не будет работать, поэтому ты упаковываешь результат в OperationResult. Если ты проектируешь интерфейсы и классы не для внешнего API, то у тебя есть механизм исключений, которым нужно пользоваться, а не городить ещё один механизм. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 13:57 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttЕсли ты проектируешь интерфейсы и классы не для внешнего API, то у тебя есть механизм исключений, которым нужно пользоваться, а не городить ещё один механизм. Ну убедил it depends ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 14:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAНу убедил it depends Как раз недавно рефакторили модуль, отвечающий за исполнение DSL. Все вызовы были построены на OperationResult (да-да, мне тоже раньше это казалось офигенно крутой идеей). Переделали на исключения, речь идёт именно про ошибки. Кода стало меньше, чище, понятней и решили пару проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 22:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttКак раз недавно рефакторили модуль, отвечающий за исполнение DSL. Все вызовы были построены на OperationResult (да-да, мне тоже раньше это казалось офигенно крутой идеей). Переделали на исключения, речь идёт именно про ошибки. Кода стало меньше, чище, понятней и решили пару проблем. Знакомо, так часто происходит при рефакторинге, решать "пару проблем". Не сомневаюсь, OperationResult тут ни при чем)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 00:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LR, :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 00:37 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Хуже, когда оказывается, что "решение" породило 4 проблемы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 00:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, вчера, 22:48 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21560717][21560717] >Как раз недавно рефакторили модуль… А почему любой модуль всегда должен что-то (код, исключение) возвращать вызывающему при ошибке? Пусть информация об ошибке иногда останется там, внутри модуля, в объекте некоего класса. По завершению вызываюший, запросив свойство, получит ссылку на объект ошибки. Если null, штатно. т.е. . . . try{модуль.метод();} catch{...} . . . или . . . модуль.метод(); if(модуль.ошибка() != null) goto ?; . . . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:03 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRЗнакомо, так часто происходит при рефакторинге, решать "пару проблем". Не сомневаюсь, OperationResult тут ни при чем)) Именно его и убирали, поэтому и привёл как пример из собственной практики. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttИменно его и убирали, поэтому и привёл как пример из собственной практики. Понятно, смена поколений, пора мне в "наш уютный колумбарий")) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:19 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевА почему любой модуль всегда должен что-то (код, исключение) возвращать вызывающему при ошибке? Брошенное исключение гарантирует, что если потребитель специально его не отловит и как-то не обработает, то дальше код исполняться не будет. Например, читаете вы файл: var file = Some.IO.File.Read(someFilePath); А файла нет, или прав доступа к файлу нет, или во время чтения что-то сломалось. Что должно быть в file? Ничего не должно быть. Должно быть выброшено исключение. ВМоисеевПусть информация об ошибке иногда останется там, внутри модуля, в объекте некоего класса. По завершению вызываюший, запросив свойство, получит ссылку на объект ошибки. Это очень-очень, крайне плохое решение. По целому ряду причин. Вы не найдёте в популярных .NET библиотеках такого решения нигде. А если найдёте, это будет нонсенс. ВМоисеевtry{модуль.метод();} catch{...} . . . или . . . модуль.метод(); if(модуль.ошибка() != null) goto ? Состояние это всегда плохо. Состояние с ошибкой последней операции -- плохо миллион-кратно. Настолько плохо, что даже не знаю, ну это как объяснять, что пить мочу -- плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:22 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRhVosttИменно его и убирали, поэтому и привёл как пример из собственной практики. Понятно, смена поколений, пора мне в "наш уютный колумбарий")) Поколение тут совершенно не при чём. Это не что-то модное и хипстерское. Скорее наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:23 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПоколение тут совершенно не при чём. Это не что-то модное и хипстерское. Скорее наоборот. Не, наоборот - это ситуация, когда ничего еще не закодировано, а на кончиках пальцев разработчика уже есть оптимальное решение, то ли "Исключения vs коды возвратов" то ли наоборот (если что - я сейчас пьян) :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRНе, наоборот - это ситуация, когда ничего еще не закодировано, а на кончиках пальцев разработчика уже есть оптимальное решение, то ли "Исключения vs коды возвратов" то ли наоборот (если что - я сейчас пьян) :)) У разработчика всё уже готово, осталось только код написать, а это фигня-вопрос )) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 01:55 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПри выставлении API наружу, механизм исключений не будет работать , поэтому ты упаковываешь результат в OperationResult.Зависит от протокола передачи данных. При использовании SOAP очень даже будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 04:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КЗависит от протокола передачи данных. При использовании SOAP очень даже будет.да, конечно. Наверняка он говорил про рукописный протокол. Где исключения не передать. Как бы если протокол что то позволяет, то глупо не пользоваться)). ... Ну и в итоге только пара мемберов против исключений и за некий загадочный код возврата. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 07:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, Код: c# 1.
Может всё таки что посовременнее? Лямбды? Замыкания?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 07:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttПри выставлении API наружу, механизм исключений не будет работать , поэтому ты упаковываешь результат в OperationResult.Зависит от протокола передачи данных. При использовании SOAP очень даже будет. Ну если так да :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 08:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttАлексей Кпропущено... Зависит от протокола передачи данных. При использовании SOAP очень даже будет. Ну если так да :) Ну, здесь и то, и другое: SOAP выбрасывает исключения, полученные в некоем подобии OperationResult ( <soap:fault> ). Ничто не мешает делать подобное со своим наколеночным OperationResult. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 09:22 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Да. Но как шутят: "если бы у бабушки были яйца, она....." )). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 09:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 01:22 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21561067][21561067] >Состояние это всегда плохо. Состояние с ошибкой последней операции -- плохо миллион-кратно. Настолько плохо, что даже не знаю, ну это как объяснять, что пить мочу -- плохо. Неуловимо напоминает "Бежин луг" И. С. Тургенева: "...Солнце - не огнистое, не раскаленное, как во время знойной засухи, не тускло-багровое, как перед бурей…" Не могу с Вами согласиться. В своё время принимал участие в написании ПО управления робототехническим комплексом 1-го поколения. Там основа-основ, база алгоритма и программы - состояние (роботов по шагам - текущее, заданное, не штатное) и управление. Новое управление на переход к следующему шагу не будет выдано, если нет требуемого состояния. Общая программа управления не получает состояние роботов ни в форме кодов возврата, ни в форме исключений, она сама запрашивает их статусы. И всё работало. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 11:10 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевИ всё работало. К сожалению, это не показатель. В космосе мы тоже....первые....были. А Илон Маск посадил ракету. Т.е. работать менять подходы нужно каждый день. ... Кроме того, в нижнем уровне АПИ применяй ходь коды, хоть знаки из трех пальцев. На прикладном уровне райзе очень даже кстати. Ну, или декларативное управление транзакциями - новый хайп java. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 11:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНу, здесь и то, и другое: SOAP выбрасывает исключения, полученные в некоем подобии OperationResult ( <soap:fault> ). Ничто не мешает делать подобное со своим наколеночным OperationResult. И народ делает подобное :) Сам использую примитивный "наколеночный" (в исследовательском/пробном коде, но иногда и в продакшн попадает) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 12:23 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LR, LR Код: c# 1. 2.
Не уверен что это гут слать по сети Есть же: Код: c# 1.
Правда длинновато)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 12:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевНе могу с Вами согласиться. В своё время принимал участие в написании ПО управления робототехническим комплексом 1-го поколения. Там основа-основ, база алгоритма и программы - состояние (роботов по шагам - текущее, заданное, не штатное) и управление. Новое управление на переход к следующему шагу не будет выдано, если нет требуемого состояния. Общая программа управления не получает состояние роботов ни в форме кодов возврата, ни в форме исключений, она сама запрашивает их статусы. И всё работало. В детстве, помню, одному из друзей разодрало зад об гвоздь на стройке. Чтобы не получить люлей, зашивали сами подручными средствами, ржавой иголкой, дизенфицировали зажигалкой. Люлей избежать не удалось, однако пациент жив, врачи даже не стали снимать швы. И пьяным за рулём тоже можна, некоторые говорят, у них так даже лучше получается. И сарай из соплей сколотить тоже можно, и даже жить там. В общем, вот такая лирика. Не имеешь желания качественно расти в профессиональном плане, да бога ради, делай как придётся. Всем наплевать. Просто и работа будет соответствующего уровня с соответствующей зарплатой. Конечно в таком случае виноват будет какой-нибудь Путин-Шмутин, ведь "у меня всё работало". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, Ну и должно быть понятно, что программирование драйверов и каких-нибудь контроллеров, где каждый байт на счету, это совершенно другая песня и совершенно другие правила. А то как-то дошло до спора с одним из заказчиков, у которого когда-то был опыт программирования контроллера для приёма денег в будке типа киви, только по-проще. И он теперь весь свой опыт и все свои костыли оттуда экстраполирует на любую разработку вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:16 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 11:58 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21561775]21561775] >К сожалению, это не показатель. Да нет, первое требование заказчика - р а б о т а. >...На прикладном уровне райзе очень даже кстати… Ну зачем вариант (райз, код, внутреннее состояние) возводить в абсолют. Удобно, эффективно - используй, неудобно - ищи что-то другое. Хочу заметить, что статус робота "Питатель" нужен, в определенные моменты, и роботу "Конвейер" и работу "Заряд". И зачем в этом случае, по завершению рабочего цикла, "Питатель" должен кому-то, чего-то и как-то сообщать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевДа нет, первое требование заказчика - р а б о т а. Ну так а фига ли люди предпочитают инормарки отечественному автопрому? Работает же, ездит. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 13:13 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21562130][21562130] >...Просто и работа будет соответствующего уровня с соответствующей зарплатой… Ну да, и 3-х байтовую арифметику с плавающей точкой писал; и операционную систему реального времени, и драйверы для неё, и ПО системы управления тех. процессами химического производства, и ПО робототехнического комплекса, и опердень банка, и прототип защищеной инфосистемы, и ГИС тоже писал (или принимал участие), но зарплату рисовали, такие как Вы. Такова жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 13:43 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21562338][21562338] >Работает же, ездит. Хочу увидеть человека, покупающего машины, которые не ездят. Я не из таких. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 13:52 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>hVostt, сегодня, 13:43 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21562338][21562338] >Работает же, ездит. Хочу увидеть человека, покупающего машины, которые не ездят. Я не из таких. Я хз что вы пытаетесь мне доказать. Типа, если делать через ж, но это как-то работает, то и нормально? Ещё раз, лично я не против. Делайте как хотите, точнее как умеете. Если не желаете профессионально расти, то и говорить нам не о чем, кто я такой, чтобы вас критиковать. Одно скажу точно, с таким подходом в нашей компании, даже самая низшая ступень стажёра будет недоступна в принципе. Нам не надо, чтобы как-то работало, надо чтобы проекты работали хорошо, быстро, качественно, легко сопровождались и могли развиваться без лишних сложностей, а также иметь способности к довольно таки серьёзным изменениям и развитию в командной разработке. При этом решали как текущие задачи, так и готовы были готовы решать будущие задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 14:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевНу да, и 3-х байтовую арифметику с плавающей точкой писал; и операционную систему реального времени, и драйверы для неё, и ПО системы управления тех. процессами химического производства, и ПО робототехнического комплекса, и опердень банка, и прототип защищеной инфосистемы, и ГИС тоже писал (или принимал участие), но зарплату рисовали, такие как Вы. Такова жизнь. Вы не понимаете главного. Это не жизнь такова, вы сами решаете как вам надо: чтобы жилось, или чтобы хорошо жилось. И для себя, и для других. Когда вам говорят почему ваш код плохой, вы противопоставляете "работает же". Это даже не смешно, зачем тогда тратить чужое время? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 14:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttНам не надо, чтобы как-то работало, надо чтобы проекты работали хорошо, быстро, качественно, легко сопровождались и могли развиваться без лишних сложностей, а также иметь способности к довольно таки серьёзным изменениям и развитию в командной разработке. При этом решали как текущие задачи, так и готовы были готовы решать будущие задачи. чотко тебе мозги промыли ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 14:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакhVosttНам не надо, чтобы как-то работало, надо чтобы проекты работали хорошо, быстро, качественно, легко сопровождались и могли развиваться без лишних сложностей, а также иметь способности к довольно таки серьёзным изменениям и развитию в командной разработке. При этом решали как текущие задачи, так и готовы были готовы решать будущие задачи. чотко тебе мозги промыли А чё не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 14:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttА чё не так? Из твоих уст идёт "агрессивная правда"))))). Клиент давно в ауте). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 14:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123hVosttА чё не так? Из твоих уст идёт "агрессивная правда"))))). Клиент давно в ауте). Да это потому что это далеко не первый раз. Уже 50 раз обсуждалось и всё сводится к тому, что "мне пофигу, мне не надо, у меня работает". Ну так если всё устраивает, зачем людям мозги колупать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 14:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVostt, а потом открываешь чужой код и не знаешь, то ли плакать, то ли переписывать всё с нуля, потому, что этот говнокод как то надо поддерживать, интегрировать или просто багу поправить. Всем пофигу только до того момента, пока они плавают в собственной жиже. Но когда тебе дают пару десятков чужих проектов, которые тебе надо либо поддерживать, либо делать новую итерацию, понимаешь всю боль от таких вот принципов "Работает и ладно". Когда даже в отладчике не понятно, чего хотел получить автор, на каком этапе вернулось не то, что ожидалось и поиск проблемы начинает затягиваться. Особенно, если в качестве результате некорректного выполнения клиент тебе просто кидают дамп процесса с примерный описание проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 15:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman MejteshVostt, а потом открываешь чужой код и не знаешь, то ли плакать, то ли переписывать всё с нуля, потому, что этот говнокод как то надо поддерживать, интегрировать или просто багу поправить. Всем пофигу только до того момента, пока они плавают в собственной жиже. Но когда тебе дают пару десятков чужих проектов, которые тебе надо либо поддерживать, либо делать новую итерацию, понимаешь всю боль от таких вот принципов "Работает и ладно". Когда даже в отладчике не понятно, чего хотел получить автор, на каком этапе вернулось не то, что ожидалось и поиск проблемы начинает затягиваться. Особенно, если в качестве результате некорректного выполнения клиент тебе просто кидают дамп процесса с примерный описание проблемы. сто разу уж обсуждалось, но повторюсь: 1)твой код, для других - такой же говнокод, чо б ты о себе не думал 2)умение разбираться в чужом коде - это скилл, который кстати в вакансиях указывают. Не умеешь? ну дык грош тебе цена ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 16:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt > Я хз что вы пытаетесь мне доказать. Вы, как тот тетерев, не слышите или не хотите слушать других, когда токуете. Ваша песня - выдвинули гипотезу, что тот, кто выполняет заказ, обязательно должен при не штатной ситуации возвращать исключение, состояние,- это плохо. Я на двух примерах попытался показать, что это не всегда возможно да и не нужно. Состояние выполняющего заказ, важно нескольким заказчикам и каждый из них может проверить статус и состояние выполнения заказа. И причем здесь код или исключение? Повторяю, зачем возводить какую-то схему в Абсолют, все схемы желательно знать и уметь ими пользоваться. >...Нам не надо, чтобы как-то работало… Я утверждаю, в ответ на реплику Petro 123, что работоспособность ПО, это архиважнейшее необходимое условие его принятия в эксплуатацию - так было, есть и будет; но нигде не утверждал что это условие достаточно. > ...Вы не понимаете главного... Когда вам говорят почему ваш код плохой… Обычно предъявляю фрагмент кода, реализующего основную идею реализации задачи. И если мне говорят, что мой код плохой, обычно прошу оппонента представить его вариант кода. На мою версию кода ( здесь и здесь ), реализующего задачу получения выборки из базы данных хранимой процедурой, оппонент ответил так и так . Как Вы понимаете, я не в восторге. Зачем множить сущности без необходимости (бритва Оккама). 1. Зачем private IDbCommand CreateCommand(EntityQueryContext context), какой смысл в этом? 2. Зачем так определять класс: public class EntityQuery : IQuery<EntityQueryContext, Entity>. Как я понимаю, на каждую ХР, свой класс. У меня всего один. 3. Зачем var lst_Entity = query.Ask(queryContext); Как с этим работать в других вызываемых методах? 4. Вторя Оккаме - не выноси сущность во вне без необходимости - я определяю класс сущности внутри панели - класса UserControl. Все панели работы со справочниками достаточно похожи друг на друга и реализуют типовые операции - Новая, Клон, Редактировать, Удалить, Сохранить. Поэтому и имеют похожий программный код. В частности, сущность, ассоциированная с выборкой, имеет одинаковое имя во всех панелях. Проще Copy-Paste. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 16:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевЯ утверждаю, в ответ на реплику Petro 123, что работоспособность ПО, это архиважнейшее необходимое условие его принятия в эксплуатацию Скажи, ты под началом архитектора, руководителя проекта или тимлида работал? У них другие критерии....архиважнейшие))))) LOL. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 17:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевбритва Оккамазачем бритва? Достаточно переменных названных не по стандартам компании. По русски: ЦЫ, КУ, ЖО. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 17:05 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 17:04 [21563389] >...У них другие критерии....архиважнейшие))))) LOL... Очень интересно. Приходилось принимать участие в сдаче системы - и тем и тем. Батенька, открываем обязательный документ "Программа и методика испытаний" и видим: 1. Объект испытаний 2. Цель и задачи испытаний 3. Требование к программному приложению Функционирование бла...бла..бла… должно обеспечивать: …. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 17:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевПриходилось принимать участие в сдаче системыну и мне приходилось. Ведь это один этап производства ПО. Их же несколько. Смотри пошире. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 17:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123Алексей КЗависит от протокола передачи данных. При использовании SOAP очень даже будет.да, конечно. Наверняка он говорил про рукописный протокол. Где исключения не передать. Как бы если протокол что то позволяет, то глупо не пользоваться)). ... Ну и в итоге только пара мемберов против исключений и за некий загадочный код возврата.А кто против исключений? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 21:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакRoman MejteshVostt, а потом открываешь чужой код и не знаешь, то ли плакать, то ли переписывать всё с нуля, потому, что этот говнокод как то надо поддерживать, интегрировать или просто багу поправить. Всем пофигу только до того момента, пока они плавают в собственной жиже. Но когда тебе дают пару десятков чужих проектов, которые тебе надо либо поддерживать, либо делать новую итерацию, понимаешь всю боль от таких вот принципов "Работает и ладно". Когда даже в отладчике не понятно, чего хотел получить автор, на каком этапе вернулось не то, что ожидалось и поиск проблемы начинает затягиваться. Особенно, если в качестве результате некорректного выполнения клиент тебе просто кидают дамп процесса с примерный описание проблемы. сто разу уж обсуждалось, но повторюсь: 1)твой код, для других - такой же говнокод, чо б ты о себе не думал 2)умение разбираться в чужом коде - это скилл, который кстати в вакансиях указывают. Не умеешь? ну дык грош тебе ценапункт 1 не понятен о чем конкретно В интернет полно примеров чужого кода, и при этом не говнокода ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2018, 22:07 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAказинакпропущено... сто разу уж обсуждалось, но повторюсь: 1)твой код, для других - такой же говнокод, чо б ты о себе не думал 2)умение разбираться в чужом коде - это скилл, который кстати в вакансиях указывают. Не умеешь? ну дык грош тебе ценапункт 1 не понятен о чем конкретно В интернет полно примеров чужого кода, и при этом не говнокода Любой код можно обозвать говнокодом, и ваш, и код в сети, тоже. Т.к. каждая задача имеет несколько решений, и сторонники одного решения всегда будут обсирать сторонников других. Так понятней? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 04:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman Mejtes, +1 казинаксто разу уж обсуждалось, но повторюсь: Где это сто раз обсуждалось? У вас на кухне? казинак1)твой код, для других - такой же говнокод, чо б ты о себе не думал Это из заповедей закоренелого говнокодера? Чтобы ничего не делать, ничего не учить, ни к чему не стремиться, ни следовать практикам, принципам, и подходам качественной разработки? Херню не говорте. казинак2)умение разбираться в чужом коде - это скилл, который кстати в вакансиях указывают. Не умеешь? ну дык грош тебе цена Я очень много копаюсь в чужом коде, пару раз в неделю минимум исследую проекты на гитхабе, в том числе в исходниках купленных компонентов. И я могу отличить говнокод от качественного кода, без каких-либо проблем. Если вы не можете, не экстраполируйте свою неграмотность и полного отсутствие понимания разницы между говнокодом и качественным кодом на других людей. Окей? Я рад что вы не с промытыми мозгами, идите ещё врачам, лётчикам, строителям расскажите, что нужно всё делать как бог на душу положит. Не вводите людей в заблуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 08:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевЯ на двух примерах попытался показать, что это не всегда возможно да и не нужно. Состояние выполняющего заказ, важно нескольким заказчикам и каждый из них может проверить статус и состояние выполнения заказа. И причем здесь код или исключение? Повторяю, зачем возводить какую-то схему в Абсолют, все схемы желательно знать и уметь ими пользоваться. Не увидел ничего невозможного. Ваши примеры не просто не показательны, они показывают как делать не нужно. ВМоисеевОбычно предъявляю фрагмент кода, реализующего основную идею реализации задачи. И если мне говорят, что мой код плохой, обычно прошу оппонента представить его вариант кода. На мою версию кода ( здесь и здесь ), реализующего задачу получения выборки из базы данных хранимой процедурой, оппонент ответил так и так . Вам skyANA начал показывать. Но вы что сделали? Правильно, вы по сути послали его с примерами. Поэтому нет причин никаких вообще тратить на вас время. ВМоисеевЗачем множить сущности без необходимости (бритва Оккама). Вы и этот принцип не понимаете, как выяснилось. ВМоисеевПроще Copy-Paste. Да это уже понятно. Давайте не будем, ок? Оставайтесь при своём, никто вас не принуждает писать качественный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 08:34 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttказинаксто разу уж обсуждалось, но повторюсь: Где это сто раз обсуждалось? У вас на кухне? на этом форуме hVostt...Чтобы ничего не делать, ничего не учить, ни к чему не стремиться, ни следовать практикам, принципам, и подходам качественной разработки? ну какой смысл чета обсуждать с тобой, если ты как попугай повторяешь чужие мантры своих то мыслей нет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 08:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Не бойтесь тюрьмы, не бойтесь сумы, Не бойтесь мора и глада, А бойтесь единственно только того, Кто скажет: "Я знаю, как надо!" (c) Александр Галич ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 08:55 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакну какой смысл чета обсуждать с тобой, если ты как попугай повторяешь чужие мантры своих то мыслей нет Я вообще не знаю, зачем ты пытаешься в споры лезть, не имея ни одного аргумента за душой. Думаешь вот этот детский сад из разряда "голову тебе промыли" -- аргумент? Ну-ну ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 08:55 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttИ я могу отличить говнокод от качественного кода, без каких-либо проблем. это только твое личное, никому не интересное, мнение вот когда будут однозначные критерии качества кода, тогда можно будет поспорить а так.... Петя против Васи... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакэто только твое личное, никому не интересное, мнение вот когда будут однозначные критерии качества кода, тогда можно будет поспорить а так.... Петя против Васи... Спорить не о чем, у тебя нет ни базы, ни основ, ни понимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакskyANAпропущено... пункт 1 не понятен о чем конкретно В интернет полно примеров чужого кода, и при этом не говнокода Любой код можно обозвать говнокодом, и ваш, и код в сети, тоже. Т.к. каждая задача имеет несколько решений, и сторонники одного решения всегда будут обсирать сторонников других. Так понятней?Понятно, Вы привыкли обсирать сторонников других решений. Вот hVostt топит за исключения в данном топике, я предложил OperationResult. И мы обсуждали именно разные стороны этих подходов, не переходя на личности и уж тем более не обсирая друг друга ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:36 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакhVosttИ я могу отличить говнокод от качественного кода, без каких-либо проблем. это только твое личное, никому не интересное, мнение вот когда будут однозначные критерии качества кода, тогда можно будет поспорить а так.... Петя против Васи... А Вы хотите здесь поспорить с ним на тему того, умеет-ли он отличить качественный код от говнокода? Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAА Вы хотите здесь поспорить с ним на тему того, умеет-ли он отличить качественный код от говнокода? Зачем? Он просто не знает, что критерии для оценки качества кода существуют. Отсюда и непонимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакна этом форумене видел))). Ты че такой агрессивный? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 09:57 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRНе бойтесь тюрьмы, не бойтесь сумы, Не бойтесь мора и глада, А бойтесь единственно только того, Кто скажет: "Я знаю, как надо!" (c) Александр Галичмаксимализм в любом проявлении плохо. Кто спорит. Но и критерии "хорошести" у программистов тоже есть. Иначе зачем топик? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:05 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttОн просто не знает, что критерии для оценки качества кода существуют.Существует единственный критерий правильности программы: программа должна соответствовать техническому заданию. Всё остальное, это субъективное мнение критиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей Кправильности программыhVosttкачества кодаты не видишь разницы между понятиями? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>Petro123, сегодня, 17:04 [21563389] >...У них другие критерии....архиважнейшие))))) LOL... Очень интересно. Приходилось принимать участие в сдаче системы - и тем и тем. Батенька, открываем обязательный документ "Программа и методика испытаний" и видим: 1. Объект испытаний 2. Цель и задачи испытаний 3. Требование к программному приложению Функционирование бла...бла..бла… должно обеспечивать: ….+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProАлексей Кправильности программыhVosttкачества кодаты не видишь разницы между понятиями?Я прекрасно понимаю, о чём идёт речь. Но мне захотелось формально подойти к этому вопросу, поэтому я не знаю, что такое "сферическое качество кода". Программа или соответствует требованиям, или не соответствует. Например, если в требованиях написано, что запрещено использовать механизм исключений, значит если программа будет использовать механизм исключений, то она будет считаться неправильной. Но обычно такого маразма в требованиях, конечно же, нет. Всё остальное можно рассматривать как рекомендации , необязательные к исполнению, не более . ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttОн просто не знает, что критерии для оценки качества кода существуют.Существует единственный критерий правильности программы: программа должна соответствовать техническому заданию. Всё остальное, это субъективное мнение критиков. И со временем система обрастает техническим долгом и реализация новых требований проходит всё с большим количеством мата, но программа продолжает соответсвовать техническому заданию ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:42 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КВсё остальное можно рассматривать как рекомендации , необязательные к исполнению, не более .Ну и будет рекомендация тимлида тебя уволить к чертовой матери, не более. Хвост же говорит - хочешь писать говнокод, пиши говнокод. Сам с собой. А будучи в команде изволь выполнять требования к качеству кода, а не только к соответствию ТЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей К, Я тебя понимаю, ты эдакий, свободный художник). Хоть и профи. Т.е. захотел метод размером в 1500 строк и написал. Работает же. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:55 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КНо обычно такого маразма в требованиях, конечно же, нет.требования чтобы тормозные колодки снимались легко и непринужденно в инструкции по эксплуатации есть? Снимал на москвиче и иномарке? Сравнивал? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 10:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProА будучи в команде изволь выполнять требования к качеству кода , а не только к соответствию ТЗ.Я не против, если эти требования чётко описаны и ТЗ на них ссылается. Тогда они должны исполняться и проверяться на этапе сдачи в эксплуатацию. Но тут речь идёт о каких-то мифических "лучших традициях", которые из года в год меняются с точностью до наоборот. Не нужно это путать. А если чётко описанных требований нет, как это часто бывает, то нужно писать в том же стиле, в каком в данном проекте решены аналогичные задачи, независимо от того, нравится тебе такой стиль написания или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Существует единственный критерий правильности программы: программа должна соответствовать техническому заданию. Всё остальное, это субъективное мнение критиков. И со временем система обрастает техническим долгом и реализация новых требований проходит всё с большим количеством мата, но программа продолжает соответсвовать техническому заданию Это уже вопрос к самим требованиям, которые должны быть заложены ещё до написания программы. Другими словами, не нужно перекладывать ответственность с архитекторов на рядовых программистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttОн просто не знает, что критерии для оценки качества кода существуют.Существует единственный критерий правильности программы: программа должна соответствовать техническому заданию. Всё остальное, это субъективное мнение критиков. Это вопрос из разряда цвета фломастеров. Это не про инженерную дисциплину, уж прости. Какие критики? При чём тут соответствие ТЗ и качества кода? Да, веришь нет, но можно такой говнокод написать, что даже у миддла волосы дыбом встанут, но формально работа программы будет соответствовать ТЗ. Я правильно понимаю, согласно твоим идеям, некоторым водителям можно бухать за рулём, если им кажется, что они всё равно нормально водят, и довезут тебя куда надо за требуемое время? В общем, странный и неуместный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Shocker.ProНу и будет рекомендация тимлида тебя уволить к чертовой матери, не более. Хвост же говорит - хочешь писать говнокод, пиши говнокод. Сам с собой. А будучи в команде изволь выполнять требования к качеству кода, а не только к соответствию ТЗ. Алексей К очень хороший специалист. Но он не командный разработчик, у него либо не было такого опыта вообще, либо он очень мал. Поэтому такие взгляды и такое отношение. Как хочу, так пишу. Творчество, понимаешь. В принципе, для single разработчика, такой подход никому не мешает. Особенно, если он собирается работать там до пенсии, а после хоть трава не расти ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:16 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttЯ правильно понимаю, согласно твоим идеям, некоторым водителям можно бухать за рулём, если им кажется, что они всё равно нормально водят, и довезут тебя куда надо за требуемое время?Нет, не правильно понимаешь. Есть закон, запрещающий "бухать" за рулём. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КЯ не против, если эти требования чётко описаны и ТЗ на них ссылается. Тогда они должны исполняться и проверяться на этапе сдачи в эксплуатацию. Это вопрос именно разработки, профессионализма, культуры, профессиональной этики. Где-то в ТЗ прописано, чтобы ты не справлял нужду за рабочим столом, нет? Но ты же так не делаешь? Хотя если ты будешь работать исключительно один, и это не будет никому мешать, почему нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КА если чётко описанных требований нет, как это часто бывает, то нужно писать в том же стиле, в каком в данном проекте решены аналогичные задачи, независимо от того, нравится тебе такой стиль написания или нет. Даже если аналогичная задача решена 12 лет назад на ASP.NET WebForms таким образом, что тестами ни фига не покрыто и с трудом разберёшься где что? А вышло так потому, что 12 лет назад надо было быстро быстро на рынок выходить, главное чтобы работало, а на качество... А качество денег принесёт? Пока ты будешь требования к нему расписывать, проектировать, вылизывать, то рынок тю-тю, займут. Извини, но я лучше предожу своё решение на техническое ревью, основанное на моём понимании принципов проектирования и опыте, чем буду ждать "чётко описанных требований". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttЯ правильно понимаю, согласно твоим идеям, некоторым водителям можно бухать за рулём, если им кажется, что они всё равно нормально водят, и довезут тебя куда надо за требуемое время?Нет, не правильно понимаешь. Есть закон, запрещающий "бухать" за рулём. Ну так во многих компаниях точно также приняты стайл гайды, и существует практика контроля за качеством кода. Но в ТЗ это не приписывается. Будешь писать говногод, будет тяжелее, дороже и дольше его развивать и сопровождать. Всё просто. При чём тут ТЗ, вообще?? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:19 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... И со временем система обрастает техническим долгом и реализация новых требований проходит всё с большим количеством мата, но программа продолжает соответсвовать техническому заданию Это уже вопрос к самим требованиям, которые должны быть заложены ещё до написания программы. Другими словами, не нужно перекладывать ответственность с архитекторов на рядовых программистов. А пример привести можешь того, в каком виде и куда должны быть заложены требования к качеству кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttГде-то в ТЗ прописано, чтобы ты не справлял нужду за рабочим столом, нет? Это тоже будет считаться административным правонарушением. Попробуешь спросить ещё раз? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:20 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAА качество денег принесёт? Пока ты будешь требования к нему расписывать, проектировать, вылизывать, то рынок тю-тю, займут. Поэтому надо всегда учиться работать профессионально и поддерживать качество на уровне, а не ждать пока тебя мордой 10 раз будут тыкать на соответствие каким-то требованиям. Потому что, видимо, для некоторых по-другому ну никак. Прям как в армии, пока матом не наорёшь и пию..лей не выпишешь, ничего делать нормально не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:22 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttГде-то в ТЗ прописано, чтобы ты не справлял нужду за рабочим столом, нет? Это тоже будет считаться административным правонарушением. Попробуешь спросить ещё раз? :-) Продолжать можно долго, потому что ТЗ не описывает многих аспектов разработки. Иначе ТЗ будет дороже самой разработки. Кроме того, разработка и чёткое ТЗ, это очень редкий случай, я его в практике вообще не видел. Разработка это всегда развитие продукта, отсюда практики CI, DevOps и т.д. Какое ТЗ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Это уже вопрос к самим требованиям, которые должны быть заложены ещё до написания программы. Другими словами, не нужно перекладывать ответственность с архитекторов на рядовых программистов. А пример привести можешь того, в каком виде и куда должны быть заложены требования к качеству кода?Ты не понимаешь. Ещё раз. Требовать исполнение можно только в том случае, если требования чётко сформулированы НА БУМАГЕ. Всё остальное можно рассматривать только в качестве рекомендаций. Например, можно требовать соблюдения правил именования Camel Case , которые чётко описаны, сослаться на эти правила в ТЗ. Нужны ещё примеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:27 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПродолжать можно долго, потому что ТЗ не описывает многих аспектов разработки. Иначе ТЗ будет дороже самой разработки. Часто так и бывает. hVosttКроме того, разработка и чёткое ТЗ, это очень редкий случай, я его в практике вообще не видел.Видимо в этом и есть проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей Ксформулированы НА БУМАГЕ.ну дак они есть. Корпоративные. По стилю кодирования, по госТайне, по ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПродолжать можно долго, потому что ТЗ не описывает многих аспектов разработки.А потом архитектор ходит и ноет по поводу того, что программисты не исполняют требования, которые он забыл озвучить перед началом проекта. Детский сад... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123Алексей Ксформулированы НА БУМАГЕ.ну дак они есть. Корпоративные. По стилю кодирования, по госТайне, по ...Ну и замечательно. Если эти требования есть, то их надо исполнять. Я об этом и говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КВидимо в этом и есть проблема. В чём проблема, в том, что требования с течением времени меняются, уточняются, информационные системы не являются замороженным функционалом в вакууме, а развиваются и эволюционируют? Вот это проблема так проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:34 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... А пример привести можешь того, в каком виде и куда должны быть заложены требования к качеству кода?Ты не понимаешь. Ещё раз. Требовать исполнение можно только в том случае, если требования чётко сформулированы НА БУМАГЕ. Всё остальное можно рассматривать только в качестве рекомендаций. Например, можно требовать соблюдения правил именования Camel Case , которые чётко описаны, сослаться на эти правила в ТЗ. Нужны ещё примеры? Требования к качеству кода, как правило это внутренние требования, которые исходят от тех лида/архитекта и тп. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:34 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
просто примера ради, достался мне 1 проект, в проекте есть файлы по 5к строк кода! отладка и правка багов в этих файлах превращается в сущий АД. Потому, что перемещаться по файлу, искать нужный код, который уже есть, понимать, что конкретно выполняет этот класс невозможно. Потому, что этот класс делает всё, что угодно. И когда сталкиваешься с таким кодом, приходит чёткое понимание того, почему классы должны быть SOLID и реализовывать только тот функционал, который можно описать 1 предложением. Все эти 5 тысяч строк кода еще и на регионы разбиты, типа тут у нас методы, тут конструкторы, тут свойства и поля. Спасает только Bookmarks, навигация по коду и т.д. И то не шибко сильно. Код выполняет поставленные перед ним задачи. Но сопровождать такой код, полная жопа. При этом, так как у кода высокая связанность, разбить это в данный момент крайне сложно и контрпродуктивно. Я убью кучу часов просто на то, чтоб код стал читаемым и вменяемым. А часов у меня таких нет, от меня требуют решения проблем заказчика, а не решения проблем разработчиков. По этому, этот говно код останется там на веки вечные, пока не закончится жизненный цикл этого приложения. Всё это не важно, когда пишешь код для себя, но когда пишешь код и знаешь, что его могут поддерживать другие люди, старайтесь ориентироваться на эталонный код. А не считать, что любой код, это говнокод ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Petro123казинакна этом форумене видел))). Ты че такой агрессивный? я белый и пушистый это так.... потроллить местных всезнаек ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ПарамонТребования к качеству кода, как правило это внутренние требования, которые исходят от тех лида/архитекта и тп.Какая разница от кого они приходят. Я говорю о том, что они должны быть чётко сформулированы. Ещё пример. Если есть требования, что тело метода должно входить на экран монитора, тогда точно назови максимальное число строк в теле метода, а то мониторы бывают разные. А если не можешь, то вообще не заикайся на эту тему в присутствии коллектива. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttПродолжать можно долго, потому что ТЗ не описывает многих аспектов разработки.А потом архитектор ходит и ноет по поводу того, что программисты не исполняют требования, которые он забыл озвучить перед началом проекта. Детский сад... Я не ною :) Ведётся документация разработчика, есть корпоративные стайлгайды, наборы рекомендаций, архитектурные решения документируются в коде и описываются в вики, за качеством кода строго слежу, программисты как и все люди косячат, совершают ошибки. Одна из важных задач архитектуры -- свести к минимуму ошибки. Пишутся тесты, много тестов. Всё это позволяет сосредоточиться на задаче. Как показатель качества кода и архитектуры, новые программисты уже в первые дни могут писать полезный код, на разбираясь неделями в кодовой базе. Потому что применяются паттерны и принципы, знакомые профессиональным разработчикам, используется общеизвестная терминология. Не нужно размахивая руками объяснять почему это плохо, а это хорошо, апеллируя к какому-то своему прошлому опыту. Существуют критерии, принципы, практики и методики. Те, кто на это клал, у нас не работает и не задерживается. И в других компаниях тоже, так как мы общаемся с многими другими компаниями и ведём общую деятельность. Когда ты законсервирован один в своём коде, то взгляды конечно будут сильно отличаться. Что мы как раз и наблюдаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КЕщё пример. Если есть требования, что тело метода должно входить на экран монитора, тогда точно назови максимальное число строк в теле метода, а то мониторы бывают разные. А если не можешь, то вообще не заикайся на эту тему в присутствии коллектива. Нет такого требования. Есть другая метрика, которая позволяет оценить, не является ли метод сильно раздутым: код для покрытия тестами сложнее и больше, чем исходный код. Ну и принципы никто не отменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Ну и конечно code review. И как не странно, что больше всего людей беспокоит, это не отнимает много времени, не в ущерб разработке, но профит колоссальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttНет такого требования.Ну у тебя нет, и что с того? А я такое встречал, и был очень недоволен этим требованием. Но это было давно... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КhVosttНет такого требования.Ну у тебя нет, и что с того? А я такое встречал, и был очень недоволен этим требованием. Но это было давно... Ну есть и такое, когда занимающий ведущие позиции разработчик имеет весьма поверхностные знания. Тем более, экранный размер, это примерная оценка, просто для того, чтобы можно было обратить на это внимание, но никак не жесткое требование. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttКогда ты законсервирован один в своём коде, то взгляды конечно будут сильно отличаться. Что мы как раз и наблюдаем.Ты так говоришь, как будто мы с тобой вместе работали много лет. :-) Ладно, мне пора идти. Всем удачного дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttТем более, экранный размер, это примерная оценка, просто для того, чтобы можно было обратить на это внимание, но никак не жесткое требование.Вот именно об этом я и говорю, наконец-то ты меня услышал. Ладно, пока! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 11:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КЛадно, мне пора идти. Всем удачного дня! И тебе ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 12:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman Mejtesпросто примера ради, достался мне 1 проект, в проекте есть файлы по 5к строк кода! отладка и правка багов в этих файлах превращается в сущий АД. Потому, что перемещаться по файлу, искать нужный код, который уже есть, понимать, что конкретно выполняет этот класс невозможно. Потому, что этот класс делает всё, что угодно. И когда сталкиваешься с таким кодом, приходит чёткое понимание того, почему классы должны быть SOLID и реализовывать только тот функционал, который можно описать 1 предложением. Все эти 5 тысяч строк кода еще и на регионы разбиты, типа тут у нас методы, тут конструкторы, тут свойства и поля. Спасает только Bookmarks, навигация по коду и т.д. И то не шибко сильно. Код выполняет поставленные перед ним задачи. Но сопровождать такой код, полная жопа. При этом, так как у кода высокая связанность, разбить это в данный момент крайне сложно и контрпродуктивно. Я убью кучу часов просто на то, чтоб код стал читаемым и вменяемым. А часов у меня таких нет, от меня требуют решения проблем заказчика, а не решения проблем разработчиков. По этому, этот говно код останется там на веки вечные, пока не закончится жизненный цикл этого приложения. Всё это не важно, когда пишешь код для себя, но когда пишешь код и знаешь, что его могут поддерживать другие люди, старайтесь ориентироваться на эталонный код. А не считать, что любой код, это говнокод Значит этот код решает большую, но единственную проблему. А не то давно бы ты смог его растащить на "классы", нет там никаких классов просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 12:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman Mejtes5к строк кода! отладка и правка багов в этих файлах превращается в сущий АД. Потому, что перемещаться по файлу, искать нужный код, который уже есть, понимать, что конкретно выполняет этот класс невозможно. Потому, что этот класс делает всё, что угодно. И когда сталкиваешься с таким кодом, приходит чёткое понимание того, почему классы должны быть SOLID и реализовывать только тот функционал, который можно описать 1 предложением.Ну будет у тебя 1000 мелких классов с непонятными зависимостями между ними. Думаешь, станет легче? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 12:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... А пример привести можешь того, в каком виде и куда должны быть заложены требования к качеству кода?Ты не понимаешь. Ещё раз. Требовать исполнение можно только в том случае, если требования чётко сформулированы НА БУМАГЕ. Всё остальное можно рассматривать только в качестве рекомендаций. Например, можно требовать соблюдения правил именования Camel Case , которые чётко описаны, сослаться на эти правила в ТЗ. Нужны ещё примеры?Конуретно у вас в каком виде они прописываются? Лично мы собрались, обсудили какие инструменты анализа кода будем использовать, как и какие правила там надо настроить. Поставили, настроили. Сейчас просо проект не соберёшь, если нарушаешь правила наименования. Для чего это в какое-то ТЗ писать? Также договорились, что без pull request-а нельзя изменения пушить. Настроили. И все изменения проходят code review. Для чего это в какое-то ТЗ писать? Также договорились как проводит технический анализ, техническое и архитектурное ревью. Зафиксировали правила в Wiki. И следуем им. Для чего это в какое-то ТЗ писать? Бюрократия какая-то. Мы тупо собираемся и договариваемся по каким правилам работаем, виксируем договорённости. И смотрим на то, соблюдаются они, или нет. И если нет, то разбираемся почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 12:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosЗначит этот код решает большую, но единственную проблему. Скажу, нам как-то удаётся решать большие и единственные проблемы без километров кода в одном файле, думаю в ответ услышу, дескать не такие уж и вселенские у вас решались проблемы. Ага, ага ViPRosА не то давно бы ты смог его растащить на "классы", нет там никаких классов просто. Нет такой задачи, растащить код на классы, просто чтоб растащить. Не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 12:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman Mejtesпросто примера ради, достался мне 1 проект, в проекте есть файлы по 5к строк кода! отладка и правка багов в этих файлах превращается в сущий АД. Потому, что перемещаться по файлу, искать нужный код, который уже есть, понимать, что конкретно выполняет этот класс невозможно. Потому, что этот класс делает всё, что угодно. И когда сталкиваешься с таким кодом, приходит чёткое понимание того, почему классы должны быть SOLID и реализовывать только тот функционал, который можно описать 1 предложением. Все эти 5 тысяч строк кода еще и на регионы разбиты, типа тут у нас методы, тут конструкторы, тут свойства и поля. Спасает только Bookmarks, навигация по коду и т.д. И то не шибко сильно. Код выполняет поставленные перед ним задачи. Но сопровождать такой код, полная жопа. При этом, так как у кода высокая связанность, разбить это в данный момент крайне сложно и контрпродуктивно. Я убью кучу часов просто на то, чтоб код стал читаемым и вменяемым. А часов у меня таких нет, от меня требуют решения проблем заказчика, а не решения проблем разработчиков. По этому, этот говно код останется там на веки вечные, пока не закончится жизненный цикл этого приложения. Всё это не важно, когда пишешь код для себя, но когда пишешь код и знаешь, что его могут поддерживать другие люди, старайтесь ориентироваться на эталонный код. А не считать, что любой код, это говнокод "реализация новых требований проходит всё с большим количеством мата, но программа продолжает соответсвовать техническому заданию" © skyANA ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КНу будет у тебя 1000 мелких классов с непонятными зависимостями между ними. Думаешь, станет легче? Легче станет не от количества классов, а когда каждый класс будет решать свои задачи, и не нарушать принципы SOLID, DRY, KISS, без действительно обоснованных на это причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КПарамонТребования к качеству кода, как правило это внутренние требования, которые исходят от тех лида/архитекта и тп.Какая разница от кого они приходят. Я говорю о том, что они должны быть чётко сформулированы. Принципы SOLID для тебя достаточно чётко сформулированы? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAБюрократия какая-то. Мы тупо собираемся и договариваемся по каким правилам работаем, виксируем договорённости. И смотрим на то, соблюдаются они, или нет. И если нет, то разбираемся почему. И главное. Знаем зачем и для чего это делаем, а не потому что кому-то там "промыли мозги". Без этого понимания, конечно, единственный способ для человека начать кодить хоть в какой-то части по уму, это тыкнуть его лицом в бумагу с требованиями, типа по ТЗ классы должны называться так, и код должен влазить на экран монитора босса ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:03 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КRoman Mejtes5к строк кода! отладка и правка багов в этих файлах превращается в сущий АД. Потому, что перемещаться по файлу, искать нужный код, который уже есть, понимать, что конкретно выполняет этот класс невозможно. Потому, что этот класс делает всё, что угодно. И когда сталкиваешься с таким кодом, приходит чёткое понимание того, почему классы должны быть SOLID и реализовывать только тот функционал, который можно описать 1 предложением.Ну будет у тебя 1000 мелких классов с непонятными зависимостями между ними. Думаешь, станет легче? 5000 строк разложить по 1000 классам? То есть по 5 строк в классе. Ты знаешь толк в проектировании ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:09 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КRoman Mejtes5к строк кода! отладка и правка багов в этих файлах превращается в сущий АД. Потому, что перемещаться по файлу, искать нужный код, который уже есть, понимать, что конкретно выполняет этот класс невозможно. Потому, что этот класс делает всё, что угодно. И когда сталкиваешься с таким кодом, приходит чёткое понимание того, почему классы должны быть SOLID и реализовывать только тот функционал, который можно описать 1 предложением.Ну будет у тебя 1000 мелких классов с непонятными зависимостями между ними. Думаешь, станет легче? И они все будут статик. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:21 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Какая разница от кого они приходят. Я говорю о том, что они должны быть чётко сформулированы. Принципы SOLID для тебя достаточно чётко сформулированы? Да пофиг. Есть формальные подходы. Например, если метод вызывается только из одного метода, то такого метода не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosИ они все будут статик. Сколько человек из активных разработчиков делали VIPROS? И сколько задействовано сейчас? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosНапример, если метод вызывается только из одного метода, то такого метода не должно быть. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:27 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttViPRosИ они все будут статик. Сколько человек из активных разработчиков делали VIPROS? И сколько задействовано сейчас? ВИПРОС не могут делать "сколько человек" - для этого должно иметь ТЗ на ВИПРОС. Сейчас на работе несколько ВИПРОСов - трехзвенные, пятизвенные,.. (наша НОВАЯ платформа!!! Еще новее - прикрутили что то туда!!!) Я веду свой проект ВИПРОС, они свои (растаскивают как могут). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttViPRosНапример, если метод вызывается только из одного метода, то такого метода не должно быть. Почему? Потому что. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosВИПРОС не могут делать "сколько человек" - для этого должно иметь ТЗ на ВИПРОС. Странный ответ, речь-то про платформу, а не интеграцию. ViPRosПотому что. Видимо когда-то Алексей К получил точно такой же ответ на вопрос про размер функции в один экран, и осерчал ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:42 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosskyANAпропущено... Принципы SOLID для тебя достаточно чётко сформулированы? Да пофиг. Есть формальные подходы. Например, если метод вызывается только из одного метода, то такого метода не должно быть. А когда появляется необходимость вызывать метод, которого нет, ещё откуда-то, то просто копипастим код? Такой подход тоже используете? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:42 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAViPRosпропущено... Да пофиг. Есть формальные подходы. Например, если метод вызывается только из одного метода, то такого метода не должно быть. А когда появляется необходимость вызывать метод, которого нет, ещё откуда-то, то просто копипастим код? Такой подход тоже используете? Как только появляется нужда копипаста и копипаст не внутри одного и того же метода (там всякие екшны ,функции выручают - когда скорость не так важна), появляется новый метод. Но, C# уже дошел до вложенных функций (есть делегаты, екшны, функции - но они медленные) и скорее всего я бы пользвался вложенными функциями в основном (но, я сижу на C# 4.0, не дают пользоваться благами). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:52 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttViPRosВИПРОС не могут делать "сколько человек" - для этого должно иметь ТЗ на ВИПРОС. Странный ответ, речь-то про платформу, а не интеграцию. ViPRosПотому что. Видимо когда-то Алексей К получил точно такой же ответ на вопрос про размер функции в один экран, и осерчал Не имеет самостоятельной ценности такие куски. Они сильно зависимы от контекста вызывающего метода. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 13:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosНе имеет самостоятельной ценности такие куски. Они сильно зависимы от контекста вызывающего метода. Ну так это совершенно другая постановка. Это из области over engineering. Не вижу проблем, выделить логический блок в приватный метод, даже если он вызывается один раз. Компилятор оптимизирует вызов, а читабельность и сопровождаемость это улучшит. Но если ценности нет, то конечно нафиг. Просто постановка: если у метода один вызов, метод не нужен -- это плохой критерий, может быть только как маркер, обратить внимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 14:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
короче, дети, вот вам совет 1. использовать исключения можно, и нужно. для вас их в ваши языки ввели не глупые дяди, чтобы вы не делали goto. если это жава или додиез ит.п. - то там есть типы. ловите нужные типы, вот и все 2. весь треп про внешний API ни о чем, просто не в кассу удачи вам, и здоровья ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 15:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttЕсли в языке есть исключения, надо их использовать. +146% ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 15:52 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин Иванович....для вас их в ваши языки ввели не глупые дяди, еще один огнепоклонник как я и думал, спор о качестве кода вылился в очередной срач поражает неумение взглянуть на ситуацию с другой точки зрения, хывост, это про тебя то, что другим удобно/неудобно читать твой код, савсем не показатель к примеру, лямбды после ооп, очченно режут глаз... и чо? запретить их? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинаклямбды после ооп, очченно режут глаз шо ты несешь ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин Ивановичказинаклямбды после ооп, очченно режут глаз шо ты несешь а ты? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин Иванович, судя по профилю, ты - завсегдатай ПТ что такое лямбды, хоть знаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:36 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакВалентин Иванович, судя по профилю, ты - завсегдатай ПТ что такое лямбды, хоть знаешь? а вы завсегдатай раздела "Работа". Видимо не ценят ваши подходы на работах =) (по вашей логике) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman MejtesказинакВалентин Иванович, судя по профилю, ты - завсегдатай ПТ что такое лямбды, хоть знаешь? а вы завсегдатай раздела "Работа". Видимо не ценят ваши подходы на работах =) (по вашей логике) не ценили б, выгнали бы давно ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныhVosttпропущено... Ну если так да :) Ну, здесь и то, и другое: SOAP выбрасывает исключения, полученные в некоем подобии OperationResult ( <soap:fault> ). Ничто не мешает делать подобное со своим наколеночным OperationResult. но это не имеет отношения к Exception и try catch ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 16:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакк примеру, лямбды после ооп, летели два крокодила, один зелёный, другой - на север ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:05 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин Ивановичкороче, дети, вот вам совет 1. использовать исключения можно, и нужно. для вас их в ваши языки ввели не глупые дяди, чтобы вы не делали goto. если это жава или додиез ит.п. - то там есть типы. ловите нужные типы, вот и все 2. весь треп про внешний API ни о чем, просто не в кассу удачи вам, и здоровья Спасибо, дядя, и тебе не хворать. Исключения используем и не только исключения. Так что не волнуйся и иди спокойно себе занимайся своими делами ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:07 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВалентин Ивановичкороче, дети, вот вам совет 1. использовать исключения можно, и нужно. для вас их в ваши языки ввели не глупые дяди, чтобы вы не делали goto. если это жава или додиез ит.п. - то там есть типы. ловите нужные типы, вот и все 2. весь треп про внешний API ни о чем, просто не в кассу удачи вам, и здоровья Спасибо, дядя, и тебе не хворать. Исключения используем и не только исключения . Так что не волнуйся и иди спокойно себе занимайся своими делами вот это и называется - языком молоть ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:13 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин ИвановичskyANAпропущено... Спасибо, дядя, и тебе не хворать. Исключения используем и не только исключения . Так что не волнуйся и иди спокойно себе занимайся своими делами вот это и называется - языком молоть Языком молоть - это много и быстро говорить. А использование не только исключений - это, извините, никак с этим не связано. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВалентин Ивановичпропущено... вот это и называется - языком молоть Языком молоть - это много и быстро говорить. А использование не только исключений - это, извините, никак с этим не связано. поделитесь, если это не секрет, как вы используете "не только" исключения. про OperationResult я уже прочитал ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 17:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин ИвановичskyANAпропущено... Языком молоть - это много и быстро говорить. А использование не только исключений - это, извините, никак с этим не связано. поделитесь, если это не секрет, как вы используете "не только" исключения. про OperationResult я уже прочиталВернёмся к контексту топика... Где-то мы выбрасываем исключения, где-то возвращаем некий Result, зависит от... Где-то даже коды возврата есть, но это надо бы переписать ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 18:14 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAВалентин Ивановичпропущено... поделитесь, если это не секрет, как вы используете "не только" исключения. про OperationResult я уже прочиталВернёмся к контексту топика... Где-то мы выбрасываем исключения, где-то возвращаем некий Result, зависит от... Где-то даже коды возврата есть, но это надо бы переписать молодцы. евреи, наверное ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 18:15 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Валентин ИвановичskyANAпропущено... Вернёмся к контексту топика... Где-то мы выбрасываем исключения, где-то возвращаем некий Result, зависит от... Где-то даже коды возврата есть, но это надо бы переписать молодцыЗнаем ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 18:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Функциональный C#. Часть 4. Обработка исключений Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 18:27 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA Функциональный C#. Часть 4. Обработка исключений Угу, автор, как это обычно бывает, намеренно привёл отвратительную реализацию в противовес своему подходу: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
А теперь перепишем, как это должно было быть: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Ну вот. Чисто, понятно. Хотя и здесь на контроллер возложено слишком много обязанностей, в нём выполняется многовато бизнес-логики. Что касается кода, приведённого в конце, как решение всех проблем, то там уже очевидная проблема в коде, которого изначально и не было: Код: c# 1. 2. 3. 4.
И вот это, "отлов ошибок" типа в функциональном стиле, чтобы потом сделать ровно тоже самое, что может сделать фильтр API, выгоды не видно совсем. Если же внутри всё написано в таком же ключе, то весь путь ошибки, проброшенный через эти "промисы" потеряется окончательно, всё ради того, чтобы залогировать корень проблемы, но не её путь. Хотя если каждый компонент по пути следования ошибки будет оборачивать в свою структуру, то... привет недоделанные исключения! Ещё строчку и файл нужно добавлять, тогда вообще будет сказка. Поехали на нашем велосипеде, чё ты, бросай это старьё Ладно, если такой подход позволял раньше более или менее красиво обойти проблему коллбеков при асинхронном подходе, сейчас при наличии async/await, это зачем нужно, непонятно. В общем, статья не убедительна, но как пример, что можно ещё так накостылить, показательна :) Где-то может будет удобно применить подобный подход, но плюсов не вижу. Функциональный стиль, здесь с большим натягом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Вот этот код Код: c# 1. 2.
Гарантировано не должен бросать исключения. А как этого добиться? Ловить внутри и засовывать в свою структуру. Чтобы потом что? Дождаться пока кто-то не поймает в OnFailure, если не забудет конечно. И при этом, почему-то именно этот кусок не пошёл в функциональную цепочку, а просто засунут в замыкания, и это странновато. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:22 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Такой подход, кстати, хорошо бы смотрелся в качестве прикладного интерфейса для возврата результатов в NancyFX. Но и только. Внедрив такой подход за рамками API, неизбежно полезут костыли. Собственно что-то очень похожее, полностью основанное на OperationResult с методами-расширениями для построения цепочек я уже делал... лет 5 назад, и это действительно было удобно, потому что API был полностью на этом построен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Дядя Колякто хорошо в теме разбирается - есть какие-то мировые лидеры мнений которые топят за исключения? один програмист мне доказывает что коды лучше потому что так Джоэл сказал, очевидно надо найти не менее или примерно такого же по авторитету человека который топит за исключения. в этой ветке я за исключения ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA Функциональный C#. Часть 4. Обработка исключений Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
это ни чем не отличается от стандарного try catch, кроме записи ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
love_bachэто ни чем не отличается от стандарного try catch, кроме записи Отличается и довольно существенно. Видим, что Result тут приходит из сервисов, т.е. там внутри такой же код. Если он где-то там сваливается, то потом прокидывается через цепочку до прикладного уровня, теряется стек вызовов, код должен полностью оперировать данными из Result, т.е. как бы функциональный стиль все дела. Здесь мы видим, всё не совсем так. Надо уже идти до конца, типа return BillingInfo.Create(billingInfo).CombineWith(CustomerName.Create(name))... ой, погодите, но по цепочке нужно оба результата. что делать... на помощь приходят туплы! ну и попёрли костыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Если убрать очевидно неудачный пример, то подход имеет право на жизнь. Но на прикладном уровне, иначе надо прям всё в этом стиле писать, и иметь базовый Result на всём проекте. А всё внешнее жёстко оборачивать и жестоко бороться с исключениями, как вредителями, обрачивать в Result. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 20:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttlove_bachэто ни чем не отличается от стандарного try catch, кроме записи Отличается и довольно существенно. Видим, что Result тут приходит из сервисов, т.е. там внутри такой же код. Если он где-то там сваливается, то потом прокидывается через цепочку до прикладного уровня, теряется стек вызовов, код должен полностью оперировать данными из Result, т.е. как бы функциональный стиль все дела. Здесь мы видим, всё не совсем так. Надо уже идти до конца, типа return BillingInfo.Create(billingInfo).CombineWith(CustomerName.Create(name))... ой, погодите, но по цепочке нужно оба результата. что делать... на помощь приходят туплы! ну и попёрли костыли. не понял, често что ты хотел сказать. и адвокат, и прокурор одновременно. "Видим, что Result тут приходит из сервисов", ну и что, каким это боком к исключениям? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 22:55 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
love_bachне понял, често что ты хотел сказать. и адвокат, и прокурор одновременно. "Видим, что Result тут приходит из сервисов", ну и что, каким это боком к исключениям? Здесь речь идёт о том, что все исключения надо подавлять везде на самой ранней стадии, т.е. по сути придётся бороться с исключениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 23:52 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttlove_bachне понял, често что ты хотел сказать. и адвокат, и прокурор одновременно. "Видим, что Result тут приходит из сервисов", ну и что, каким это боком к исключениям? Здесь речь идёт о том, что все исключения надо подавлять везде на самой ранней стадии, т.е. по сути придётся бороться с исключениями. ты точно именно это хотел сказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2018, 23:54 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
love_bachты точно именно это хотел сказать? В некоторых случаях приведённый подход может быть оправдан, но знать о проблемах этого подхода нужно. Это не чёрно-белое кино. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 00:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAПоставили, настроили. Сейчас просо проект не соберёшь, если нарушаешь правила наименования. Для чего это в какое-то ТЗ писать?Ну автоматизировали контроль исполнения требований. Молодцы! Радуюсь за вас! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 05:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Вообще, если кто не понял, я заговорил об оценке правильности программы в ответ на беспочвенные обвинения в некомпетентности, начиная примерно отсюда . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 07:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КВообще, если кто не понял, я заговорил об оценке правильности программы в ответ на беспочвенные обвинения в некомпетентности, начиная примерно отсюда . Увы, беспочвенность обвинений не доказана. По-твоему, качество кода не имеет значения, если ПО работает и формально удовлетворяет требования. Но это не вопрос мнения, это вопрос финансовой стороны, ты не платишь за разработку, ты не оцениваешь затраты на дальнейшее развитие и сопровождение, bus factor, и прочее, с такой позиции разговарить не о чем. Это очень глупо, если честно. Когда тебе, например, сделают такой ремонт при сдаче всё ок, а через неделю обои отклеились, через другую штукатурка обвалилась, тогда может дойдёт. В общем, печальный и насквозь унылый типичный русский подход. Посадил проводку на скруту, работает же. Прилепил на сопли, ну вроде не отваливается, держится. И т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 09:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttАлексей КВообще, если кто не понял, я заговорил об оценке правильности программы в ответ на беспочвенные обвинения в некомпетентности, начиная примерно отсюда . Увы, беспочвенность обвинений не доказана. По-твоему, качество кода не имеет значения, если ПО работает и формально удовлетворяет требования. Но это не вопрос мнения, это вопрос финансовой стороны , ты не платишь за разработку, ты не оцениваешь затраты на дальнейшее развитие и сопровождение, bus factor, и прочее, с такой позиции разговарить не о чем. Это очень глупо, если честно.Повторюсь, это вопрос постановки задачи. Не надо перекладывать ответственность на рядового исполнителя. Он не обязан делать то, чего не просили. hVosttКогда тебе, например, сделают такой ремонт при сдаче всё ок, а через неделю обои отклеились, через другую штукатурка обвалилась, тогда может дойдёт.На этот случай есть гарантийный срок эксплуатации, который оговаривается заранее. hVosttВ общем, печальный и насквозь унылый типичный русский подход . Посадил проводку на скруту, работает же. Прилепил на сопли, ну вроде не отваливается, держится. И т.д.Удивил! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 09:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVostt, Другими словами, если нравится программисту хранить ошибку предыдущего вызова как поле класса, твоё какое дело, если ты явно этого не запретил при постановке задачи? Разрешено всё, что не запрещено. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 09:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КПовторюсь, это вопрос постановки задачи. Не надо перекладывать ответственность на рядового исполнителя. Он не обязан делать то, чего не просили. Я по-моему совершенно ясно выразился, и не однократно. Хочешь говнокодить -- да ради бога. Плевал на качество кода потому что «не просили», и не желаешь профессионально расти, клал на подходы, практики, рекомендации -- да пожалуйста, это личное дело каждого. Просто это скажется и на профессиональной деятельности и за ЗП. Алексей КДругими словами, если нравится программисту хранить ошибку предыдущего вызова как поле класса, твоё какое дело, если ты явно этого не запретил при постановке задачи? Разрешено всё, что не запрещено. И во многих компаниях такое отношение к работе и труду выявят уже на этапе собеседования, или в первые дни практики. И попросят подыскать себе другое место, под стать своим детским замашкам. Я просто об этом говорю, и никого ни к чему не принуждаю насильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 09:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttПросто это скажется и на профессиональной деятельности и за ЗП. ... И во многих компаниях такое отношение к работе и труду выявят уже на этапе собеседования, или в первые дни практики. И попросят подыскать себе другое место, под стать своим детским замашкам.Интересно, а как к этому отнесётся трудовая инспекция? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttЯ по-моему совершенно ясно выразился, и не однократно. Хочешь говнокодить -- да ради бога. Плевал на качество кода потому что «не просили», и не желаешь профессионально расти, клал на подходы, практики, рекомендации -- да пожалуйста, это личное дело каждого.А тебе не кажется, что программисты под твоим руководством занимаются онанизмом избыточным проектированием? Нет, ну если деньги девать некуда, то ради Бога... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttИ во многих компаниях такое отношение к работе и труду выявят уже на этапе собеседования, или в первые дни практики. И попросят подыскать себе другое место, под стать своим детским замашкам. работал я в такой конторе, тоже моск выносили всякими код ревью, особенно умиляло когда шеф бесился, если в в табе не 4 а 2 пробела но есть навалом других контор, где ценится компетентность, а не корпоративный дух и повторение зазубренных мантр но вот хвост нашел себя в такой атмосфере поздравлямс! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакпоздравлямс! Что, завидовать молча не получается ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:27 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КИнтересно, а как к этому отнесётся трудовая инспекция? К тому, что на испытательном сроке выявилось, что кандидат не соответствует требованиям? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:30 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttАлексей КИнтересно, а как к этому отнесётся трудовая инспекция? К тому, что на испытательном сроке выявилось, что кандидат не соответствует требованиям?Каким требованиям? Что кандидаты пишут программы не так, как ты хочешь? Думаю, что отнесётся с юмором. :-) Ладно, шучу, забудь... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Алексей К, сегодня, 09:32 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21567880][21567880] >Другими словами, если нравится программисту хранить ошибку предыдущего вызова как поле класса, твоё какое дело, если ты явно этого не запретил при постановке задачи? Разрешено всё, что не запрещено. Алексей, не будем горячиться. Какие-то рамки всё таки должны присутствовать. Плохо то, что эти рамки хотят задавать или hVostt и К или они записано на стенках лампы. Сложность в определении критериев. Программирование в какой-то степени искусство. Как я понимаю, у художников они есть, но если попросить написать портрет красивой женщины нескольким из них, то ни у одного из них не получится творение Леонардо. Но это совсем не означает, что все портреты плохи. Более того, давать ту или иную характеристику их работам можно только в том случае, их видишь и сравниваешь. На мой взгляд (это личное мнение) тоже самое и в программировании - оценки можно давать, если есть с чем сравнивать, только работа программиста усугубляется ТЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:37 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КА тебе не кажется, что программисты под твоим руководством занимаются онанизмом избыточным проектированием? Нет, ну если деньги девать некуда, то ради Бога... Нет, не кажется. Я всегда критически отношусь к своему коду, даже больше чем к чужому. Идеальную во всех отношениях архитектуру спроектировать практически невозможно, часто приходится идти на компромиссы, делать временные решения, технический долг накапливается, потом рефакторится. Но дело делается, мы сделали в гораздо более сжатые сроки, то, что не смогла сделать другая компания разработчик около пяти лет назад для федерального заказчика. Мы видели их код, там лютый треш. На качество кода положили, но формально выполнили задачу, до уровня «работает». Но это не прокатило. Поэтому давай не надо городить про избыточное проектирование. Да, перекосы бывают. Есть очень много примеров упоротости, когда за деревьями леса не видно. Но если не стремиться писать хорошо, то хорошо не будет никогда. А подход унылого тупого исполнителя: сказали -- сделал, не сказали -- не сделал, мне даже обсуждать не интересно, так как это вообще тупизна в высшем её проявлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевПлохо то, что эти рамки хотят задавать или hVostt и К или они записано на стенках лампы. Сложность в определении критериев. Вы что с деревьев слезли? Почитайте литературу, ознакомьтесь с принципами, статьями, докладами. По-общайтесь с другими разработчиками из серьёзных контор. Что вы постоянно выдумываете какую-то фигню, то про фломастеры, то про сложности в определении критериев. Нет никаких сложностей, фломастеры это не инженерная дисциплина. ВМоисеевПрограммирование в какой-то степени искусство. Как я понимаю, у художников они есть Я думаю вот здесь и есть проблема. Когда разработчик думает, что он художник, надо его гнать в шею ссаными тряпками. Это писец. Ему в моду надо, платьями, бирюльками заниматься, а не разработкой. Пусть найдёт себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинакработал я в такой конторе, тоже моск выносили всякими код ревью, особенно умиляло когда шеф бесился, если в в табе не 4 а 2 пробела но есть навалом других контор, где ценится компетентность, а не корпоративный дух и повторение зазубренных мантр но вот хвост нашел себя в такой атмосфере поздравлямс!))) Для разработчиков, кому приходится разбираться с предметной областью (адекватно формализовать, продумать архитектуру, утрясти ТЗ с заказчиком и т.п.), "красивость/правильность" кода - на десятом месте. Для чисто-кодеров, понятно, на первом. По сути, тут спорят представители разных специальностей (или разных типов - "узкие" и "широкие"). Наверное, не стоит сравнивать последствия брака в этих специальностях ("расхлебывать говнокод" vs "страдать от ошибок формализации/архитектуры"). Но понять можно и тех и других в их доводах... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:46 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRДля разработчиков, кому приходится разбираться с предметной областью (адекватно формализовать, продумать архитектуру, утрясти ТЗ с заказчиком и т.п.), "красивость/правильность" кода - на десятом месте. Для чисто-кодеров, понятно, на первом. По сути, тут спорят представители разных специальностей (или разных типов - "узкие" и "широкие"). Наверное, не стоит сравнивать последствия брака в этих специальностях ("расхлебывать говнокод" vs "страдать от ошибок формализации/архитектуры"). Но понять можно и тех и других в их доводах... Не нужно искать проблему там, где её нет. Либо человек говнокодер и не хочет это менять, либо профессионал. Это в любой профессии и области. Можно всё делать через жопу и доводить до стадии «работает». Но цена такому горе-профессионалу три копейки в подворотне. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttНе нужно искать проблему там, где её нет. Либо человек говнокодер и не хочет это менять, либо профессионал. Это в любой профессии и области. Можно всё делать через жопу и доводить до стадии «работает». Но цена такому горе-профессионалу три копейки в подворотне. Не вижу никакого противоречия в том, чтобы быть профессионалом-говнокодером. Как справедливо заметил казинак, твой код всегда для кого-то будет говнокодом. Достаточно взглянуть на исходники дотнета, чтобы в этом убедиться)) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 10:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRhVosttНе нужно искать проблему там, где её нет. Либо человек говнокодер и не хочет это менять, либо профессионал. Это в любой профессии и области. Можно всё делать через жопу и доводить до стадии «работает». Но цена такому горе-профессионалу три копейки в подворотне. Не вижу никакого противоречия в том, чтобы быть профессионалом-говнокодером. Как справедливо заметил казинак, твой код всегда для кого-то будет говнокодом. Достаточно взглянуть на исходники дотнета, чтобы в этом убедиться)) Я гляжу в исходники дотнета и библиотек из стека MS, и не убеждаюсь в этом. Конечно, есть неудачные решения, их не мало. Я сам могу привести много таких из дотнета, и не могу похвастаться идеальным кодом во всех отношениях со своей стороны. Но отличить код от говнокода можно по ряду критериев. Поэтому не надо ляля. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 11:21 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttНо отличить код от говнокода можно по ряду критериев. Поэтому не надо ляля. В контексте спора критерий может быть лишь один - готов ли кто-то заплатить за этот код и сколько, верно? Есть у меня знакомый математик (в школьные годы участвовал вместе с Григорием Перельманом на всесоюзной олимпиаде), зарабатывает сейчас программированием математики. Делал он нам библиотечку с серьезной математикой. Так вот, его код для меня - 100% "говнокод", однако никаких претензий по этому поводу мы ему, разумеется, не выдвигали. А заплатили очень хорошие за действительно хорошую работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 11:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 10:45 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21568042][21568042] >...Вы что с деревьев слезли?... Что вы постоянно выдумываете какую-то фигню… Опять за своё. Ну не понимают жующие желуди вкус апельсина. Я то думал, приводя версию кода ( здесь и здесь ), что мне покажут как надо писать код или, по крайней мере, почему плох мой вариант кода. Получил ответ так и так . Прокомментировал Добавлю: Зачем в коде public class EntityQuery : IQuery<EntityQueryContext, Entity> создается var list = new List<Entity>(); Не ДОЛЖЕН РАБОТАТЬ class EntityQuery с Entity. С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели. На мой взгляд, class EntityQuery должен использовать обратный вызов метода панели. У меня бывает, что одна и та же выборка, обрабатывается разными методами панели. Но моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 11:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRhVosttНо отличить код от говнокода можно по ряду критериев. Поэтому не надо ляля. В контексте спора критерий может быть лишь один - готов ли кто-то заплатить за этот код и сколько, верно? Есть у меня знакомый математик (в школьные годы участвовал вместе с Григорием Перельманом на всесоюзной олимпиаде), зарабатывает сейчас программированием математики. Делал он нам библиотечку с серьезной математикой. Так вот, его код для меня - 100% "говнокод", однако никаких претензий по этому поводу мы ему, разумеется, не выдвигали. А заплатили очень хорошие за действительно хорошую работу. а что конкретно у этого математика было говнокодом , кроме фатального недостатка? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 11:59 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttВМоисеевПрограммирование в какой-то степени искусство. Как я понимаю, у художников они есть Я думаю вот здесь и есть проблема. Когда разработчик думает, что он художник, надо его гнать в шею ссаными тряпками. Это писец. Ему в моду надо, платьями, бирюльками заниматься, а не разработкой. Пусть найдёт себя.Художника каждый может обидеть. Сейчас обидно было! :D думаю как и художник, программист должен обладать сильным абстрактным мышлением, для удержания картины системы в целом в голове, в целом для заданного компонента. Некое внутренние видение, с учётом требования и заложенной архитектуры. Если меня попросить нарисовать Мона Лизу, это будет ужасно некрасиво, но если я буду 10 лет практиковать это, может, что и получится =) Так же и в программировании, качественный код не может быть у человека, который только начал свой путь в этом направлении. Навыки появляются не за 1 год, понимание многих вещей в том числе. И для понимания нужно обладать огромным количеством знаний, на вроде того, как работает процессор, чтоб понимать, что в результате ты действительно написал. я программирую около 20 лет, профессионально около 10, не считаю себя гуру или "Ван Гогом". p.s. так как не считаю себя гуру, часто не даю советов в которых сам не уверен =) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:07 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRВ контексте спора критерий может быть лишь один - готов ли кто-то заплатить за этот код и сколько, верно? Ну в точку! Стоимость говнокодера намного дешевле, чем профессионального разработчика, который пишет качественный код и стремиться к этому, без бумажек, тыканий мордой и пинков. LRЕсть у меня знакомый математик (в школьные годы участвовал вместе с Григорием Перельманом на всесоюзной олимпиаде), зарабатывает сейчас программированием математики. Делал он нам библиотечку с серьезной математикой. Так вот, его код для меня - 100% "говнокод", однако никаких претензий по этому поводу мы ему, разумеется, не выдвигали. А заплатили очень хорошие за действительно хорошую работу. И что, библиотека поддерживается? Развивается? Участвует в различных проектах? Посмотрите на код в гитхабе у библиотек с большой популярностью. Они написаны качественно, покрыты тестами, следуют практикам и принципам. Некоторые годами развиваются и при этом не ломают тысячи и сотни тысяч проектов, в которых применяются (инциденты бывают, но крайне редко). Они что, по-вашему, долбанулись? Им промыли мозги? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:09 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевОпять за своё. Ну не понимают жующие желуди вкус апельсина. Почему вы себя все время сравниваете со свиньями? Вы же не хотите профессионально расти, вам и жёлуди подходят. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:10 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman MejtesХудожника каждый может обидеть. Сейчас обидно было! Художник тут в том смысле, как как вижу, так и рисую. Что вижу, то и пою. Как хочу так и делаю. Как будто кто-то мешает. В конторы только главное не напрашиваться, где люди работают, и у них есть цели и задачи. Хочешь быть художником, пожалуйста, инди разработку никто не отменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttИ что, библиотека поддерживается? Развивается? Участвует в различных проектах? Посмотрите на код в гитхабе у библиотек с большой популярностью. Они написаны качественно, покрыты тестами, следуют практикам и принципам. Некоторые годами развиваются и при этом не ломают тысячи и сотни тысяч проектов, в которых применяются (инциденты бывают, но крайне редко). Они что, по-вашему, долбанулись? Им промыли мозги?мне кажется продакшн код выкладывая в паблик, стыдно выкладывать, если это говнокод :) мне иногда и самому стыдно бывает :) самый лучший способ учиться не говнокодить, изучать потроха dot.net'а, там многое уже реализовано. Просто вспомните где есть подобное тому, что вам нужно, зайдите на сайт мс или декомрилер и читай на здоровье. даже декомпиляторы выдают вполне красивый код, местами правда перегруженный по тексту ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:12 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевНо моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты. Вы чего хотите, я не понимаю, печеньку? Делайте как хотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:22 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
love_bachа что конкретно у этого математика было говнокодом , кроме фатального недостатка? "Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным). Конкретно там мне не понравился "процедурный стиль", old school)) Множество статических публичных членов, доступных и обновляемых из такого же неструктурированного (для меня, для него, не сомневаюсь, очень даже структурированного) множества различных процедур. hVosttИ что, библиотека поддерживается? Развивается? Участвует в различных проектах? Библиотека успешно эксплуатируется. Никакой необходимости в развитии нет и не предвидится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:25 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LR"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным). Давайте так. Вам знакомы хоть какие-то критерии качества кода? Нет? Ну тогда не нужно выдумывать про субъективные понятия. Да? Ну тогда вы себе противоречите. LRБиблиотека успешно эксплуатируется. Никакой необходимости в развитии нет и не предвидится. Хорошо. Что и требовалось доказать. Если у человека выпала возможность и необходимость один раз написать какой-то код, чтобы добиться какой-то цели, он это может сделать как угодно и это может занять сколько угодно времени. Мы говорим про профессию, а вы про случай, как в моём примере, когда зашили рану ржавой иглой и пацинет выжил. Это что-то доказывает? Даже не смешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Roman Mejtesсамый лучший способ учиться не говнокодить Вообще, нет такой самоцели, как писать качественный код, если только не находишься в стадии начального глубокого обучения. Никто со своим кодом на выставки не ездит и премии за качество кода не получает. Именно поэтому, некоторые люди не понимают, зачем тогда писать качественный хороший код. Зачастую это одиночки. Всё просто блин, как дважды два. И такие люди очень тяжело вписываются в командную разработку, а зачастую так и не вписываются. Хорошо, если у них есть стабильное пригретое место, где они могут продержаться до пенсии. Тогда вопросов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 12:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttНу в точку! Стоимость говнокодера намного дешевле, чем профессионального разработчика, который пишет качественный код и стремиться к этому, без бумажек, тыканий мордой и пинков. Да, мысль приставить к этому математику "разработчика, который пишет качественный код", могла бы промелькнуть но и только. Вероятность ошибок реализации в таком случае многократно бы возросла, не говоря уже о времени, нервах и трудозатратах. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttLR"Говнокод" - понятие совершенно субъективное (это hVostt считает его объективным). Давайте так. Вам знакомы хоть какие-то критерии качества кода? Нет? Ну тогда не нужно выдумывать про субъективные понятия. Да? Ну тогда вы себе противоречите. Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код. hVosttМы говорим про профессию, а вы про случай, как в моём примере, когда зашили рану ржавой иглой и пацинет выжил. Это что-то доказывает? Даже не смешно. Профессия - то, что кормит. Если "говнокодеры" зарабатывают "говнокодерством" - они профессионалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:10 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRhVosttпропущено... Давайте так. Вам знакомы хоть какие-то критерии качества кода? Нет? Ну тогда не нужно выдумывать про субъективные понятия. Да? Ну тогда вы себе противоречите. Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код. Слово "качественный" тут лишнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRУже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код. Как говорил Жириновский: "Каждой бабе по мужику")). Для кого то привокзальный представитель это качественный, профессиональный код. Мужик Вот если он непросто живёт, а очень хорошо живет))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
schiLRпропущено... Уже вроде все согласились - если код покупают (и кодер с этого живет) - это качественный/пофессиональный код. Слово "качественный" тут лишнее. Почему? Код - товар. Вы же не будете покупать недостаточно качественный товар? Если хотите, пусть будет "достаточно качественный". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRschiпропущено... Слово "качественный" тут лишнее. Почему? Код - товар. Вы же не будете покупать недостаточно качественный товар? Если хотите, пусть будет "достаточно качественный". Потому что лишнее. Код - это не товар, товар - это в лучшем случае результат компиляции кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:51 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
LRДа, мысль приставить к этому математику "разработчика, который пишет качественный код", могла бы промелькнуть но и только. Вероятность ошибок реализации в таком случае многократно бы возросла, не говоря уже о времени, нервах и трудозатратах. Именно поэтому написание бизнес-логики мы вынесли в DSL на Lua, который пишут аналитики, а они ни разу не программисты. Просто пишут обычные сценарии. Среди них есть и математические, и довольно таки сложные. Но код линейный, способы компоновки задано архитектурой, тонны проверок, чтобы аналитик не выстрелил себе в ногу. LRПрофессия - то, что кормит. Если "говнокодеры" зарабатывают "говнокодерством" - они профессионалы. Вы про инди разработчиков, которые пишут свои калькуляторы, или про разработку крупных систем, в которых задействовано много разработчиков и есть такие понятия, как текучка кадров, bus factor? О чём вы говорите вообще? Если каждый «художник» будет приходить и писать как лично ему кажется правильным, потом приходит другой и пытается догадаться, что имел в виду предыдущий художник. Если мы говорим о C#, то ошибки ловят в исключениях. Если валидация, то передаются в специальных структурах. А если приходит очередной жеватель желудей, Вася, который думает что это апельсины, который клал хер на всё и на всех, засунул свои ошибки в какую-то статическую переменную на задворках, где теперь искать концы? Разбираться что там, будет ли это работать в многопоточной среде, что делать если статического текста нехватает, всё переписывать? И громко материться? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 13:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttИменно поэтому написание бизнес-логики мы вынесли в DSL на Lua, который пишут аналитики, а они ни разу не программисты. если бизнес-логику пишут аналитики то на хрена там вы? заказчику то нужна бизнес-логика, а не ваши красивости в коде я так понимаю вы просто пильщики ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 14:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
казинак, значит там "бизнес - логика" детский лепет ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 14:31 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANA Функциональный C#. Часть 4. Обработка исключений Угу, автор, как это обычно бывает, намеренно привёл отвратительную реализацию в противовес своему подходу: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
А теперь перепишем, как это должно было быть: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Ну вот. Чисто, понятно. Хотя и здесь на контроллер возложено слишком много обязанностей, в нём выполняется многовато бизнес-логики. Что касается кода, приведённого в конце, как решение всех проблем, то там уже очевидная проблема в коде, которого изначально и не было: Код: c# 1. 2. 3. 4.
И вот это, "отлов ошибок" типа в функциональном стиле, чтобы потом сделать ровно тоже самое, что может сделать фильтр API, выгоды не видно совсем. Если же внутри всё написано в таком же ключе, то весь путь ошибки, проброшенный через эти "промисы" потеряется окончательно, всё ради того, чтобы залогировать корень проблемы, но не её путь. Хотя если каждый компонент по пути следования ошибки будет оборачивать в свою структуру, то... привет недоделанные исключения! Ещё строчку и файл нужно добавлять, тогда вообще будет сказка. Поехали на нашем велосипеде, чё ты, бросай это старьё Ладно, если такой подход позволял раньше более или менее красиво обойти проблему коллбеков при асинхронном подходе, сейчас при наличии async/await, это зачем нужно, непонятно. В общем, статья не убедительна, но как пример, что можно ещё так накостылить, показательна :) Где-то может будет удобно применить подобный подход, но плюсов не вижу. Функциональный стиль, здесь с большим натягом. Конечно статья не убидительна, ведь ты её читал по диагонали судя по тому, что приводишь пример того, как типа должно быть ровно такой, с чего она начинается ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 16:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttlove_bachне понял, често что ты хотел сказать. и адвокат, и прокурор одновременно. "Видим, что Result тут приходит из сервисов", ну и что, каким это боком к исключениям? Здесь речь идёт о том, что все исключения надо подавлять везде на самой ранней стадии, т.е. по сути придётся бороться с исключениями.вообще-то это не борьба, не подавление, а правило ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 16:52 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>hVostt, сегодня, 10:45 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21568042][21568042] >...Вы что с деревьев слезли?... Что вы постоянно выдумываете какую-то фигню… Опять за своё. Ну не понимают жующие желуди вкус апельсина. Я то думал, приводя версию кода ( здесь и здесь ), что мне покажут как надо писать код или, по крайней мере, почему плох мой вариант кода. Получил ответ так и так . Прокомментировал Добавлю: Зачем в коде public class EntityQuery : IQuery<EntityQueryContext, Entity> создается var list = new List<Entity>(); Не ДОЛЖЕН РАБОТАТЬ class EntityQuery с Entity. С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели. На мой взгляд, class EntityQuery должен использовать обратный вызов метода панели. У меня бывает, что одна и та же выборка, обрабатывается разными методами панели. Но моё решение, другие делают иначе. Но не стоит вешать любимый Вами ярлык на эти варианты.Я могу объяснить смысл и плюсы данного подхода. Но кажется мне, что Вы не готовы слушать и понимать. Судя по тому, что Вы не увидели, что общая часть уехала в базовый класс, и нет в итоге в EntityQuery выражения var list = new List<Entity>(); ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 17:10 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевС Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели. Простите, а что Вы в базе храните? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 17:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 17:17 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21569592][21569592] >Простите, а что Вы в базе храните? На данный момент занимаюсь ГИС. Значит как минимум у объектов есть географические координаты. Конкретнее - есть задача отображения положения объектов на географической карте в заданное время. 1. Есть объекты и их состояние (положение на карте) 2. Есть документы (извещения), которые меняют состояние объектов. 3. В процессе развития, объекты могут появляться или пропадать. 4. Одним из параметров извещения является время. Попытка решения в лоб - ищется группа извещений, время которых меньше заданного, а группе ищутся с максимальным временем - оказалась не состоятельной. Задача перешла из режима отчетного документа в интерактивный режим. А здесь присутствует фактор времени. Десятки минут не катят. Пока ничего лучшего не придумал, кроме как строить в дополнительной таблицы временные срезы и извещения выбирать не из всего множества, а из диапазона между срезом и заданной датой. Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 18:27 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевЯ буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать.тема топика совсе другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 18:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, сколько таких объектов и как часто приходят извещения (что такое?) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 18:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAКонечно статья не убидительна, ведь ты её читал по диагонали судя по тому, что приводишь пример того, как типа должно быть ровно такой, с чего она начинается Я не нашёл недостающие части, которые потом воткнули в fluent цепочку вызовов делегатов. Ну и решил исправить обратно именно результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 19:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA https://enterprisecraftsmanship.com/2015/02/26/exceptions-for-flow-control-in-c/ Согласен с исследованиями и выводами. И к чему это в данном контексте? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 19:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>ViPRos, сегодня, 18:43 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21569774][21569774] >сколько таких объектов и как часто приходят извещения (что такое?) Нужных решаемой задаче объектов - несколько сотен, нужных задаче извещений (документов) думаю в пределах десятка тысяч в год. Беда в том что объекты и извещения не разбиты по группам, а свалены в одну кучу, а всевозможных объектов в системе десятки (а может и сотни) тысяч. Общее количество приходящих и отправляемых извещений в год я не знаю. Но они копятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 19:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, Ну, если бы просто рассказал о проблеме (на языке предметной области) возможно чем то помогли, но ты описываешь свое решение. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 21:06 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 17:17 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21569592][21569592] >Простите, а что Вы в базе храните? На данный момент занимаюсь ГИС. Значит как минимум у объектов есть географические координаты. Конкретнее - есть задача отображения положения объектов на географической карте в заданное время. 1. Есть объекты и их состояние (положение на карте) 2. Есть документы (извещения), которые меняют состояние объектов. 3. В процессе развития, объекты могут появляться или пропадать. 4. Одним из параметров извещения является время. Попытка решения в лоб - ищется группа извещений, время которых меньше заданного, а группе ищутся с максимальным временем - оказалась не состоятельной. Задача перешла из режима отчетного документа в интерактивный режим. А здесь присутствует фактор времени. Десятки минут не катят. Пока ничего лучшего не придумал, кроме как строить в дополнительной таблицы временные срезы и извещения выбирать не из всего множества, а из диапазона между срезом и заданной датой. Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать.но при этом "С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели" То есть объекты, что Вы храните в базе, это не сущности Вашей предметной области? Или у Вас есть такие сущности, есть сякие. Одни обзываются Entity, другие иначе? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 15:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 15:18 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21578002] [21578002] >Или у Вас есть такие сущности, есть сякие. Одни обзываются Entity, другие иначе? Да, именно так. Вот простой пример, с одной сущностью: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Запрос на формирование выборки извещений: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Примерно вот так формируем выборку из извещений. Так отражаем её строку на сущность: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 19:00 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
жесть ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 22:39 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, и что же означает на Вашем языке "Entity не выносится за пределы панели"? я вижу, что это публичный класс на весь Ваш ГИС... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 13:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 15:18 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21578002] [21578002] >Или у Вас есть такие сущности, есть сякие. Одни обзываются Entity, другие иначе? Да, именно так. Вот простой пример, с одной сущностью: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Запрос на формирование выборки извещений: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Примерно вот так формируем выборку из извещений. Так отражаем её строку на сущность: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А покажите пожалуйста списко using-ов, используемых классом uc_СрезТБ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 14:24 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев Код: c# 1.
А что, может случиться, что lst_Entity будет null ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 14:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA, да просто надо посмотреть что это за "row_Entity" и все станет ясно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 15:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRos, что конкретно станет ясно? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 15:21 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAViPRos, что конкретно станет ясно? зачем вся эта белиберда ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 15:48 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, а скажите ещё вот что: класс панели (UserControl) к какому из описанных Вами выше 5-ти слоёв относится? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 15:50 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANA https://enterprisecraftsmanship.com/2015/02/26/exceptions-for-flow-control-in-c/ Согласен с исследованиями и выводами. И к чему это в данном контексте? К тому, ч то там один из выводов - это: If you know how to deal with exceptions a library throws, catch them at the lowest level possible . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 16:00 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAIf you know how to deal with exceptions a library throws, catch them at the lowest level possible . If you know how to deal with exceptions a library throws , чего не выделил? ) Засунуть пойманное исключение внутрь OperationResult это из разряда shut up, I know what I'm doing ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 18:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAIf you know how to deal with exceptions a library throws, catch them at the lowest level possible . If you know how to deal with exceptions a library throws , чего не выделил? ) Оставил оригинальное выделение, что в статье, прикинь ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 19:02 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 13:08 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21580889][21580889] >...я вижу, что это публичный класс на весь Ваш ГИС... Вы не правы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
А что, может случиться, что lst_Entity будет null? Список не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 21:53 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 13:08 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21580889][21580889] >...я вижу, что это публичный класс на весь Ваш ГИС... Вы не правы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
А что, может случиться, что lst_Entity будет null? Список не нужен. Вы бы оставили нужное для понимания. а не все сто тыщь строк тащить ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2018, 23:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Cat2, сегодня, 23:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21582986][21582986] >Вы бы оставили нужное для понимания. а не все сто тыщь строк тащить Посмотрите на это , это , это , это , а Вы то зачем сто тыщь строк тащите, можно и ссылку. Вы сами то понимаете, что это …не публичный класс на весь Ваш ГИС.. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 00:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 13:08 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21580889][21580889] >...я вижу, что это публичный класс на весь Ваш ГИС... Вы не правы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
О, дак это вложенный тип. Но у него модификатор доступа public , и у контейнера public , то есть бери и пользуйся: Код: c# 1.
И в чём тут смысл? Вы ведь не используете в нём переменные и методы контейнера. И зачем в нём определены конструкторы, когда все свойтва имеют публичные сеттеры? ВМоисеевА что, может случиться, что lst_Entity будет null? Список не нужен.Иначе задам вопрос: разве может случиться так, что lst_Entity будет null в момент вызова метода Add? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 09:01 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, если понядобится формировать отчёт и отправлять его на e-mail заинтересованным лицам к примеру каждый понедельник автоматически, не через интерфейс программы, то Вы ещё один класс заведёте, аналогичный row_Entity? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 09:07 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевПопытка решения в лоб - ищется группа извещений, время которых меньше заданного, а группе ищутся с максимальным временем - оказалась не состоятельной. Задача перешла из режима отчетного документа в интерактивный режим. А здесь присутствует фактор времени. Десятки минут не катят. Пока ничего лучшего не придумал, кроме как строить в дополнительной таблицы временные срезы и извещения выбирать не из всего множества, а из диапазона между срезом и заданной датой. Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать. А в чём проблема-то? Хранимка медленно отрабатывает? Показывайте структуру таблиц и толком объясните задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 09:10 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:01 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583428] [21583428] >Иначе задам вопрос: разве может случиться так, что lst_Entity будет null в момент вызова метода Add? Да. У меня хранимые процедуры, реализующие INSERT, UPDATE, DELETE возвращают выборку из одной строки - список не нужен. Пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
lst_Entity может принимать значение null, ссылки на пустой список, ссылки на заполненный список. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 10:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 09:10 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583444][21583444] >А в чём проблема-то? Хранимка медленно отрабатывает? Да. Если интересно, то см. здесь , здесь и здесь . Структуру всех таблиц для построения нужной мне выборки по извещениям я не знаю. Контора сопровождает инфосистему, сделанную другими. Код ХР подсмотрели у тех, кто до нас. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 10:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 09:01 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583428] [21583428] >Иначе задам вопрос: разве может случиться так, что lst_Entity будет null в момент вызова метода Add? Да. У меня хранимые процедуры, реализующие INSERT, UPDATE, DELETE возвращают выборку из одной строки - список не нужен. Пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
lst_Entity может принимать значение null, ссылки на пустой список, ссылки на заполненный список. Мда, как же всё у Вас прибито гвоздями... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 10:41 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 09:10 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21583444][21583444] >А в чём проблема-то? Хранимка медленно отрабатывает? Да. Если интересно, то см. здесь , здесь и здесь . Структуру всех таблиц для построения нужной мне выборки по извещениям я не знаю. Контора сопровождает инфосистему, сделанную другими. Код ХР подсмотрели у тех, кто до нас. Если Вы за два года ни структуры, ни плана, ни индексов не узнали, то боюсь Вам не помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 10:49 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, всё сидите на Oracle 8i? изменения в БД идут исключительно через хранимки? свои объекты в БД создавать есть возможность? изменять хранимые процедуры? если да, то смотрите в сторону денормализации... летать будет всё со страшной силой ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 11:04 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, >10:41 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21584048][21584048] >Мда, как же всё у Вас прибито гвоздями… Интересно, видим одно и тоже - выводы делаем диаметрально противоположные. Я стремился создать одну гибкую конструкцию обработки выборки из ХП, Вы же на каждый чих создаёте класс, что чуждо для меня. Например, как формирую извещения для крайнего изменения состояния объектов: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 11:40 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANA, этот rowEntity нафиг никому не нужен вовсе ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 12:08 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеевВы же на каждый чих создаёте класс, что чуждо для меня Что-то вас не парит использования классов, созданных «на каждый чих», из библиотек .NET. Вы просто не хотите ничему учиться, уже скоро год пройдёт, как вы копируете одни и те же тексты с плохим кодом, и все советы и рекомендации прошли мимо. Просто тратите чужое время. Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 12:09 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttуже скоро год пройдёт, как вы копируете одни и те же тексты с плохим кодом, и все советы и рекомендации прошли мимо. Просто тратите чужое время. Зачем? не спрашивай. Бесполезно. Я не понимаю зачем эту тему опять подняли. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 12:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, и в чём же гибкость? У Вас интерфейс гвоздями прибит к базе Oracle и логика с ними перемешана. Понадобится что-то качественно изменить и фигушки. Скажете, что это не предполагалось и надо всё переписывать. Тупо вызвать хранимку без параметров и возвращающую NUMBER вместо курсора Ваша конструкция уже не позволяет. А гибкость - это быстрая и лёгкая реакция на новые требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 12:35 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ViPRosskyANA, этот rowEntity нафиг никому не нужен вовсеДа там весь проект на фиг никому не нужен. Было бы иначе, то давно бы всплыли очевидные косяки архитектуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 12:38 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 12:35 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21584720][21584720] >...У Вас интерфейс гвоздями прибит к базе Oracle и логика с ними перемешана… Вы не правы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 15:17 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, и что Вы показали? Это то же приложение, но работающее вдруг с SQL Server? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 15:26 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
ВМоисеев, уберите Код: c# 1.
уберите Код: c# 1.
будет интерфейс работать? нет... прибит гвоздями а гибкость - это кода уровню представления не важно то, из какого хранилища прилетают данные ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 15:29 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAа гибкость - это кода уровню представления не важно то, из какого хранилища прилетают данные Суть ещё только в том, чтобы иметь возможность заменить источник данных. Архитектура, которая это позволяет, может решать и другой спектр задач, кеширование, профилирование, вешать аспекты, аудит и многое другое. Естественно, судя по приведённым кускам кода, об этом даже нельзя и мечтать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2018, 15:45 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttskyANAа гибкость - это кода уровню представления не важно то, из какого хранилища прилетают данные Суть ещё только в том, чтобы иметь возможность заменить источник данных.В двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт. hVosttАрхитектура, которая это позволяет, может решать и другой спектр задач, кеширование, профилирование, вешать аспекты, аудит и многое другое. Естественно, судя по приведённым кускам кода, об этом даже нельзя и мечтать.В двухзвенке это решается средствами СУБД - profiler, triggers и т. п. Мне тоже не нравятся показанные примеры кода. Но они решают поставленную задачу, никакие требования не нарушены, значит претензий быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 05:28 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
skyANAесли да, то смотрите в сторону денормализации... летать будет всё со страшной силойНо и проблем с обеспечением целостности данных добавится... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 05:33 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт. С чего бы это? Делается отдельный класс для взаимодействия с бд, суть которого - исключительно чтение/запись данных, и никакой прикладной логики внутри. Из класса экстрактится интерфейс, класс по этому интерфейсу инжектится в классы, реализующие прикладную логику. При необходимости смены БД пишется новый класс для новой БД с тем же интерфейсом, инжектится вместо старого. Всё это прекрасно работает на двухзвенке. Ну, разумеется, если программа написана так, что данные из БД сразу пихаются в гуй, и в нем же и обрабатываются, то тогда да, уже мало что поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 06:23 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт. С чего бы это? Делается отдельный класс для взаимодействия с бд, суть которого - исключительно чтение/запись данных, и никакой прикладной логики внутри. Из класса экстрактится интерфейс, класс по этому интерфейсу инжектится в классы, реализующие прикладную логику. При необходимости смены БД пишется новый класс для новой БД с тем же интерфейсом, инжектится вместо старого. Всё это прекрасно работает на двухзвенке. Ну, разумеется, если программа написана так, что данные из БД сразу пихаются в гуй, и в нем же и обрабатываются, то тогда да, уже мало что поможет.Да, обращение к БД в коде клиента лучше вынести в репозитарий, кто ж спорит. Но прикладную логику разумно располагать на сервере. В двухзвенке для этого используются средства СУБД - stored proc, view и т. п. А в этом случае хоть как ты организуй код на клиенте, серверную часть при смене СУБД придётся переделывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 06:32 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КВ двухзвенке для этого используются средства СУБД - stored proc, view и т. п. А в этом случае хоть как ты организуй код на клиенте, серверную часть при смене СУБД придётся переделывать. А такое и в трехзвенке бывает, когда критичные к быстродействию куски прикладной логики выносятся в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 06:56 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КВ двухзвенке для этого используются средства СУБД - stored proc, view и т. п. А в этом случае хоть как ты организуй код на клиенте, серверную часть при смене СУБД придётся переделывать. А такое и в трехзвенке бывает, когда критичные к быстродействию куски прикладной логики выносятся в БД.Да, но сейчас речь не об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 09:44 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт. Двухзвенка это прошлый век. Алексей КВ двухзвенке это решается средствами СУБД - profiler, triggers и т. п. Т.е. костыли и приплясывания с бубном. Да и пофигу, прошлый век и совершенно не интересно. Алексей КМне тоже не нравятся показанные примеры кода. Но они решают поставленную задачу, никакие требования не нарушены, значит претензий быть не может. Ещё неизвестно решают ли. Или так хочет думать автор. Некоторые лечатся уринотерапией и искренне верят, что помогает. Тогда вроде как можно сказать тоже самое, что сказал ты. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 10:43 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVosttАлексей КВ двухзвенке смена БД обычно приводит к переписыванию всей прикладной логики. Поэтому о смене БД речи не идёт. Двухзвенка это прошлый век.И что? Предлагаешь все существующие проекты переписать на трёхзвенку? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 10:58 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
hVostt Ещё неизвестно решают ли. Или так хочет думать автор. Некоторые лечатся уринотерапией и искренне верят, что помогает. Тогда вроде как можно сказать тоже самое, что сказал ты.Тебе нужны копии актов сдачи проекта в промышленную эксплуатацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 11:05 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КИ что? Предлагаешь все существующие проекты переписать на трёхзвенку? Если это возможно, проект активно развивается и ему ещё грозит многолетняя поддержка. Да. А для новых проектов всё очевидно. Алексей КТебе нужны копии актов сдачи проекта в промышленную эксплуатацию? Слушай, если бы я не видел столько говна в своей жизни, прошедшего все ПМИ и введённые в промышленную эксплуатацию, не видел сколько потеряно на этом денег в итоге, сколько нервных клеток программистов угроблено, которым пришлось это говно сопровождать, я бы так категорично и экспрессивно об этом не говорил. Любой кто мне скажет в рамках моей деятельности, пусть хоть через жопу написано, но работает, просто пойдёт лесом, я даже не постесняюсь употребить более крепкие выражения. Хотите жить в говне, живите. Без меня. Ну и топлю за то, чтобы молодые умы не поддавались на подобные десткрутивные, глупые и наивные утверждения, типа "главное, чтобы работало". Есть такое понятие, как качество. Российский автопром тоже выпускает продукты, которые "работают же", но что-то не особо много желающих ЭТО покупать и НА ЭТОМ ездить. Поэтому не надо задвигать про акты сдачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 11:16 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Подобный менталитет это просто бич российской разработки и вообще любой деятельности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 11:18 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>Сон Веры Павловны, сегодня, 06:23 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21586952][21586952] >...Делается отдельный класс для взаимодействия с бд… пишется новый класс для новой БД... Отдельный класс - это уже проходил. Вы считаете, что данная конструкция удобна - покажите на примере программного кода, как Вы реализуете доступ к данным посредством обращения к ХП (хотя бы на примере двух ХП(выборок)) >что данные из БД сразу пихаются в гуй, Инфосистема, что мы поддерживаем, интерактивна. Информация непосредственно отображается в основном либо на карте, либо в гриде в гуевых потоках. Информация нужна именно здесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 12:00 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
Алексей КskyANAесли да, то смотрите в сторону денормализации... летать будет всё со страшной силойНо и проблем с обеспечением целостности данных добавится... Если руки прямые, то не добавится ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2018, 18:19 |
|
Исключения vs коды возвратов
|
|||
---|---|---|---|
#18+
>skyANA, 19 июл 18, 15:29 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21585446][21585446] >уберите… уберите… будет интерфейс работать? нет... прибит гвоздями Вы не правы. Убрал, пока полёт нормальный. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 10:22 |
|
|
start [/forum/moderation_log.php?user_name=look1000]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
98ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
318ms |
get tp. blocked users: |
1ms |
others: | 585ms |
total: | 1064ms |
0 / 0 |