tag:blogger.com,1999:blog-458002489272917533.post1211640852173839033..comments2024-02-14T14:07:38.890+05:00Comments on Блог Александра Бындю: Exception logic?Alexander Byndyuhttp://www.blogger.com/profile/14185486842573956085noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-458002489272917533.post-81545875445780742592012-06-07T11:46:19.897+06:002012-06-07T11:46:19.897+06:00Александр привет. Допустим есть класс треугольник....Александр привет. Допустим есть класс треугольник. В конструкторе задаются 3 числа. <br />Напрашивается валидация: все значения больше нуля, сумма двух не может быть меньше третьей стороны.<br /> В данном случае как бы построил эту валидацию? Возможны варианты с билдером, котороый бы принимал параметры эти и выдавал инстанс треугольника, а конструктор сделать приватным к примеру, но в случае не Artiom K.noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-29762865969804244652012-06-06T23:11:13.914+06:002012-06-06T23:11:13.914+06:00Действительно прошло много времени, перечитал свою...Действительно прошло много времени, перечитал свою статью и понял, что сейчас я уже не 100% на стороне первого варианта.<br />Тем не менее я бы не стал часто использовать вариант с исключениями. В данный момент я склоняюсь к способу, который используется в функциях TryParse, когда результат сразу понятен. Еще возможен вариант с созданием NullObject или как вариация InvalidObject через билдер, Alexander Byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-63265262570285140552012-06-05T16:29:32.475+06:002012-06-05T16:29:32.475+06:00День добрый. Александр, прошел год, мнение не изме...День добрый. Александр, прошел год, мнение не изменилось?<br /><br />Как по мне, то я предпочитаю второй вариант с исключеними, т.о. избавиться от множества проверок + практически сводится к нулю вероятность работы с нарушенной целостностью.Artiom K.noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-70372465993018960392010-07-06T17:05:05.413+06:002010-07-06T17:05:05.413+06:00Этот комментарий был удален автором.Idsahttps://www.blogger.com/profile/15985124810962581978noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-3678453958052622752010-07-06T12:21:14.821+06:002010-07-06T12:21:14.821+06:00Этот комментарий был удален автором.Idsahttps://www.blogger.com/profile/15985124810962581978noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-86164309387809949622010-07-06T12:19:34.564+06:002010-07-06T12:19:34.564+06:00Я за второй :)
Несколько аргументов:
1. Исключени...Я за второй :)<br /><br />Несколько аргументов:<br />1. Исключения нельзя проигнорировать. Ты можешь забыть обработать ErrorCode, и приложение продолжит работать, делая вид, что ошибки нет (отладка в таком случае получится адской). Исключение в этом случае просто убьет приложение (и правильно сделает). К тому же вероятность того, что за время разработки исключение останется без соответствующего Idsahttps://www.blogger.com/profile/15985124810962581978noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-86286966965240779832010-07-05T09:15:42.649+06:002010-07-05T09:15:42.649+06:00@Idsa
Мне тоже было интересно перечитать этот пост...@Idsa<br />Мне тоже было интересно перечитать этот пост.<br /><br />Я думаю, что исключения должны кидаться, когда программа сделала критическую ошибку и дальше работать не может (повреждены данные, нарушена целостность в БД и т.п.). Как было написано в книжке Программист-пракматик: "Мёртвые программы не врут".<br /><br />Т.е. в случае парсера метод TryParse или возврат объекта в Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-46189137009844106032010-07-05T08:45:22.398+06:002010-07-05T08:45:22.398+06:00А я вот больше склоняюсь ко второму варианту. Если...А я вот больше склоняюсь ко второму варианту. Если посмотреть на эволюцию, то от первого подхода (ErrCode и др.) пришли ко второму.<br /><br />Все-таки ситуации, когда исключения заметно снижают производительность, редки. Для этих случаев рядом с Parse можно реализовать TryParse.<br /><br />Интересно узнать твое мнение на этот счет 2 года спустя.Idsahttps://www.blogger.com/profile/15985124810962581978noreply@blogger.com