powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
25 сообщений из 406, страница 7 из 17
Исключения vs коды возвратов
    #39671440
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

tight coupling
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671442
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAСвязность характеризует то, насколько хорошо все методы класса или все фрагменты метода соответствуют главной цели, - иначе говоря, насколько сфокусирован класс © Макконнелл, 2010.

Связ А нность.


Ой, бл*, в глаза балуюсь Ты про coupling.

Всё равно не понял. Тебе так, или иначе надо проверять результат, что вернулся из кэша.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671476
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВсё равно не понял. Тебе так, или иначе надо проверять результат, что вернулся из кэша.

Для потребителя значение либо есть в кеше, либо нет. Остальное, либо ошибка, либо какая-то скрытая обработка.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671739
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВсё равно не понял. Тебе так, или иначе надо проверять результат, что вернулся из кэша.

Для потребителя значение либо есть в кеше, либо нет. Остальное, либо ошибка, либо какая-то скрытая обработка.
Именно.
Есть в кеше - используем.
Нет, ошибка, проблемы с нодой - потребитель на фиг не важно, он идёт за данными в базу.

То есть если DistributedCache.Client возвращает operationResult.Success, то берём operationResult.Value и используем.
Не Success - идём в базу. При этом не надо тут генерировать никаких исключений и героически их обрабатывать.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671897
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТо есть если DistributedCache.Client возвращает operationResult.Success, то берём operationResult.Value и используем.
Не Success - идём в базу. При этом не надо тут генерировать никаких исключений и героически их обрабатывать.

В 1000 мест мне нужно работать с кешем и в 1000 мест я вынужден проверить Success. Но с кешем понятно, это не критичный участок, а если это распределённое файловое хранилище, например. Мне нужно получить или сохранить файл, очень много где, зачем мне этот OperationResult, мне удобно работать с файлами, как с System.IO, ошибки путь сваливают весь код, ибо он не имеет смысла без файлов, и ничего нельзя сделать.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671918
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТо есть если DistributedCache.Client возвращает operationResult.Success, то берём operationResult.Value и используем.
Не Success - идём в базу. При этом не надо тут генерировать никаких исключений и героически их обрабатывать.

В 1000 мест мне нужно работать с кешем и в 1000 мест я вынужден проверить Success. Но с кешем понятно, это не критичный участок, а если это распределённое файловое хранилище, например. Мне нужно получить или сохранить файл, очень много где, зачем мне этот OperationResult, мне удобно работать с файлами, как с System.IO, ошибки путь сваливают весь код, ибо он не имеет смысла без файлов, и ничего нельзя сделать.И откуда ты взял эти 1000 мест?
Пишется декоратор и ты работаешь с repository, или query как обычно, просто при конфигурации IoC контроллера указываешь, что заверните-ка мне это в CacheDecorator.

Работа с файлами тоже разная бывает.
К примеру пользователь заливает js под видом картинки.
Можно кинуть ему исключение "Нельзя, козлина!", героически его поймать и вывести "Ай, ай, ай".
А можно operationResult.StatusCode = StatusCode.NotAllowed.

Но сваливать весь код уж точно не стоит
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671978
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ откуда ты взял эти 1000 мест?
Пишется декоратор и ты работаешь с repository, или query как обычно, просто при конфигурации IoC контроллера указываешь, что заверните-ка мне это в CacheDecorator.

Ну мы уже выяснили, что таки делаем декоратор, и при ошибках бросаем исключения, если это требуется. Если компонент не влияет критически на работу приложения, то ошибки игнорируются, например, для кеша Get отдаёт всегда null, а GetOrAdd возвращает значение из переданной фабрики.

skyANAРабота с файлами тоже разная бывает.
К примеру пользователь заливает js под видом картинки.
Можно кинуть ему исключение "Нельзя, козлина!", героически его поймать и вывести "Ай, ай, ай".
А можно operationResult.StatusCode = StatusCode.NotAllowed.

А вот здесь ты как раз путаешь валидацию с ошибками. Попытка внести данные, нарушающие целостность СУБД, это ошибка. При чём ошибка программиста, который не удосужился проверить данные перед тем, как их сохранять, не обеспечил условия. Здесь так же. Если же даже после валидации ошибка возникла, то это исключительная ситуация, которую не нужно пытаться свести к валидации и показывать пользователю.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671979
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНо сваливать весь код уж точно не стоит

Стоит, так как программист не выполнил нужные действия, значит это надо чинить.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672006
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

короче бессмысленный какой-то спор Всё зависит от ситуации, архитектуры приложения и требований.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672010
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt,

короче бессмысленный какой-то спор Всё зависит от ситуации, архитектуры приложения и требований.

Ну почему. При выставлении API наружу, механизм исключений не будет работать, поэтому ты упаковываешь результат в OperationResult.

Если ты проектируешь интерфейсы и классы не для внешнего API, то у тебя есть механизм исключений, которым нужно пользоваться, а не городить ещё один механизм.

Как бы понятно, it depends, но ключевые тезисы никто не отменял :)
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672078
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПри выставлении API наружу, механизм исключений не будет работать, поэтому ты упаковываешь результат в OperationResult.

Если ты проектируешь интерфейсы и классы не для внешнего API, то у тебя есть механизм исключений, которым нужно пользоваться, а не городить ещё один механизм.
+1
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672103
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли ты проектируешь интерфейсы и классы не для внешнего API, то у тебя есть механизм исключений, которым нужно пользоваться, а не городить ещё один механизм.
Ну убедил it depends
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672285
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу убедил it depends

Как раз недавно рефакторили модуль, отвечающий за исполнение DSL. Все вызовы были построены на OperationResult (да-да, мне тоже раньше это казалось офигенно крутой идеей). Переделали на исключения, речь идёт именно про ошибки. Кода стало меньше, чище, понятней и решили пару проблем.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672302
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКак раз недавно рефакторили модуль, отвечающий за исполнение DSL. Все вызовы были построены на OperationResult (да-да, мне тоже раньше это казалось офигенно крутой идеей). Переделали на исключения, речь идёт именно про ошибки. Кода стало меньше, чище, понятней и решили пару проблем.
Знакомо, так часто происходит при рефакторинге, решать "пару проблем". Не сомневаюсь, OperationResult тут ни при чем))
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672304
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

:)
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672305
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хуже, когда оказывается, что "решение" породило 4 проблемы :)
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672311
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, вчера, 22:48 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21560717][21560717]
>Как раз недавно рефакторили модуль…
А почему любой модуль всегда должен что-то (код, исключение) возвращать вызывающему при ошибке? Пусть информация об ошибке иногда останется там, внутри модуля, в объекте некоего класса. По завершению вызываюший, запросив свойство, получит ссылку на объект ошибки. Если null, штатно.
т.е.
. . .
try{модуль.метод();}
catch{...}
. . .
или
. . .
модуль.метод();
if(модуль.ошибка() != null) goto ?;
. . .
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672312
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRЗнакомо, так часто происходит при рефакторинге, решать "пару проблем". Не сомневаюсь, OperationResult тут ни при чем))

Именно его и убирали, поэтому и привёл как пример из собственной практики.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672314
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИменно его и убирали, поэтому и привёл как пример из собственной практики.
Понятно, смена поколений, пора мне в "наш уютный колумбарий"))
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672315
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевА почему любой модуль всегда должен что-то (код, исключение) возвращать вызывающему при ошибке?

Брошенное исключение гарантирует, что если потребитель специально его не отловит и как-то не обработает, то дальше код исполняться не будет.

Например, читаете вы файл:

var file = Some.IO.File.Read(someFilePath);

А файла нет, или прав доступа к файлу нет, или во время чтения что-то сломалось.

Что должно быть в file? Ничего не должно быть. Должно быть выброшено исключение.

ВМоисеевПусть информация об ошибке иногда останется там, внутри модуля, в объекте некоего класса. По завершению вызываюший, запросив свойство, получит ссылку на объект ошибки.

Это очень-очень, крайне плохое решение. По целому ряду причин. Вы не найдёте в популярных .NET библиотеках такого решения нигде. А если найдёте, это будет нонсенс.


ВМоисеевtry{модуль.метод();}
catch{...}
. . .
или
. . .
модуль.метод();
if(модуль.ошибка() != null) goto ?

Состояние это всегда плохо. Состояние с ошибкой последней операции -- плохо миллион-кратно. Настолько плохо, что даже не знаю, ну это как объяснять, что пить мочу -- плохо.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672316
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRhVosttИменно его и убирали, поэтому и привёл как пример из собственной практики.
Понятно, смена поколений, пора мне в "наш уютный колумбарий"))

Поколение тут совершенно не при чём. Это не что-то модное и хипстерское. Скорее наоборот.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672321
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПоколение тут совершенно не при чём. Это не что-то модное и хипстерское. Скорее наоборот.
Не, наоборот - это ситуация, когда ничего еще не закодировано, а на кончиках пальцев разработчика уже есть оптимальное решение, то ли "Исключения vs коды возвратов" то ли наоборот (если что - я сейчас пьян) :))
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672325
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRНе, наоборот - это ситуация, когда ничего еще не закодировано, а на кончиках пальцев разработчика уже есть оптимальное решение, то ли "Исключения vs коды возвратов" то ли наоборот (если что - я сейчас пьян) :))

У разработчика всё уже готово, осталось только код написать, а это фигня-вопрос ))
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672336
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПри выставлении API наружу, механизм исключений не будет работать , поэтому ты упаковываешь результат в OperationResult.Зависит от протокола передачи данных. При использовании SOAP очень даже будет.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39672346
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗависит от протокола передачи данных. При использовании SOAP очень даже будет.да, конечно. Наверняка он говорил про рукописный протокол. Где исключения не передать.
Как бы если протокол что то позволяет, то глупо не пользоваться)).
...
Ну и в итоге только пара мемберов против исключений и за некий загадочный код возврата.
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 7 из 17
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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