|
|
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Как вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить? В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 11:43 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить? Исключительно положительно. Никаких проблем нет, решаемые задачи - это обработка ошибок и исключительных ситуаций. Проблемы которые могут быть - это 1) относительная медленность работы исключений (естественно только в случае throw). 2) понимание разработчиками , когда должны быть использованы исключения. А именно - когда дальнейшая работа функции НЕВОЗМОЖНА. selinoth В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу? Чушь собачья. Однако использование исключений в коде, который изначально не был готов к ним, может быть проблемно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 11:50 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Когда то бывает удобней использовать исключения, когда то удобней обойтись без них. Всегда можно обойтись без исключений. Принципиальный отказ от исключений приводит к потенциальному не рацианальному коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 11:59 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
selinothВ данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу? Человек, который пытается навязать такую идеологию, очевидно не компетентен в вопросах программирования С++. Постарайтесь убедить его в обратном. Опишите сложности программирования без обработки исключений вообще. Приведите статистику увеличения человеко-часов на написание кода и отладку. Желательно подкрепить эти слова конкретными цифрами (в рублях). Действует отрезвляюще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 12:07 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить? В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу? Единственным достойным аргументом для запрета использования исключений является переносимость. Многие компиляторы для встроенных ОС не умеют работать с исключениями или делают это криво, например Symbian. Другим аргументом может быть "совместимость" с существующим кодом. Но и там можно писать с исключениями, главное чтобы не выпускать их в код, который их не поддерживает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 12:41 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
selinothОснование для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. http://www.relisoft.com/resource/resmain.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 14:59 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить? В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу? есть такая вещь - суда...те которые ходят по рекам и морям... раньше их строили из одной большей миски ("Адльф Гитлер" вспоминаем, лежащий на дне Чёрного - возле Новороссийска)... затем стали делать корабли - секционными (дабы при катастрофе, заполнялся водой не весь корпус а только его незначитильная часть).. дык вот, ловушки исключений - именно так и можно воспринимать (как секции, увеличивающие запас плавучести Вашего кода). ОЧЕНЬ актуально, когда разработчик и клиент отделены неким НЕ нулевым расстоянием друг от друга... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 15:19 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить? Очень положительно. По поводу задач. Если проект большой то используются везде и всегда. При наличии рекурсивных алгоритмов использую исключения даже в минимальных проектах. Используются когда на этапе разработки модуля еще не извесно будущее поведение в зависимости от ситуации. Или Если не извесно где ситуацию дешевле обрабатывать. По ходу тестирования и развития это выясняется и throw заменяется на локальный обработчик или return или пишется обработчик исклюения в нужном месте. На первом этапе разработки все потенциально убойные ситуации выбрасывают исключения. По мере формирования билда их становится все меньше и меньше. По опыту очень ускоряется процесс отладки и поиск багов и сокращается количество фич вызванных непредвиденным поведением. Если в проекте, где то уже используется assert, то использование вместо него исключений повышает удобство отладки. В классе искюлчения можно сохранить гораздо больше информации для анализа возникшей ситуации. selinoth В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу? По поводу стека я проблем не вижу. Он просто раскручивается до catch. По памяти и межпроцессному взамодействию, да есть, нужно внимательно подходить к вопросу дизайна. В этом есть положительный момент, при разработке дизайна тратится лишний час, зато экономится неделя при отладке. Проект дисциплинируется с самого начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 16:15 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
О! Ваня хочет сказать 1. Когда ошибку можно обработать на месте, ее нужно обрабатывать на месте. 2. Если ошибка должна обрабатываться выше, то можно из функции вернуть код ошибки или возбудить исключение. Естественно, оба способа требуют проектирования - нужно будет спроектировать иерархию исключений или прописать в документации по разработке, что означают коды ошибок. Самый явный пример - библиотека. Некоторые ошибки ее исполнения разработчики не исправляют, а возбуждают исключение или возвращают код ошибки. А прикладной программист, использующий библиотеку, дальше уже обрабатывает ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 17:56 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
ivan________________...прописать в документации по разработке, что означают коды ошибок... О да! Занятие, которым девелоперы себя не утруждают. Обычно вместо перечня ошибок в мануале имееи место скупая запись "...обратитесь в службу поддержки и.т.д". Впрочем, это оффтоп! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 18:36 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
а шо у нас со скоростью работы программ напичканых ексепшинами? Ась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 19:55 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
A. Fig Leeа шо у нас со скоростью работы программ напичканых ексепшинами? Ась? А что есть проблемы со скоростью? С нынешними частотами и памятью об этом мало кто задумывается. ИХМО скорость выхода из функции по исключению приблизительно равна возврату стекового обьекта( экземпляра класса). На данном этапе развития ИТ скорость разработки, отладки и поддержки гораздо более важный критерий нежели быстродействие конечного продукта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:43 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
я лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений. например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение. аффтопитезь: объект либо именован, либо не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 12:25 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Aklinя лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений. например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение. аффтопитезь: объект либо именован, либо не существует Если я правельно понял, про что речь, то в линухах вылетат сигнал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 12:58 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
A. Fig Leeа шо у нас со скоростью работы программ напичканых ексепшинами? Ась?ну да, есть немного. И как, заметно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 15:49 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
хотя… а что быстрее, забубенить try/catch или десять ифов для проверки возвращённого значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 15:50 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
maXmoхотя… а что быстрее, забубенить try/catch или десять ифов для проверки возвращённого значения? Лучше switch Который занимает 70% тела функции. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 16:38 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
maXmo A. Fig Leeа шо у нас со скоростью работы программ напичканых ексепшинами? Ась?ну да, есть немного. И как, заметно? Угу. Если писать программы для трейдинга - там каждая микросекунда на счету. Или ввобще что-нибудь реалтайм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:21 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
maXmoхотя… а что быстрее, забубенить try/catch или десять ифов для проверки возвращённого значения? Ясен пень - ифы будут быстрее. Там единственное сравнение на ошибка/неошибка, потом можно и код ошибки искать, а с трай-кетч - вхождение в трай всегда будет кушать время независимо от будет ошибка или нет. Свитч особо не лучше ифа - если глянуть ассемблер. Просто выглядит приятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:24 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Akh Aklinя лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений. например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение. аффтопитезь: объект либо именован, либо не существует Если я правельно понял, про что речь, то в линухах вылетат сигнал. нет, вы поняли неправильно. я имел ввиду 1) я, собственно, против 2) есть исключительные единичные сутиации, где без исключений не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:27 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Aklinя лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений. например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение. аффтопитезь: объект либо именован, либо не существует не верю. коряво написано значит. надо листы хранить выделенной памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:37 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
А я "за", потому что когда вызывается N + 1 функция из функции N, и в N + 1 функции происходит ошибка, а обработать её хочется в самой первой, то при классическом подходе надо написать N конструкций доставляющих ошибку наверх. Используя же try/catch, это делать не придётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:46 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
man_555А я "за", потому что когда вызывается N + 1 функция из функции N, и в N + 1 функции происходит ошибка, а обработать её хочется в самой первой, то при классическом подходе надо написать N конструкций доставляющих ошибку наверх. Используя же try/catch, это делать не придётся.Да ну, глупости какие.... Во первых, большинство ошибок произошедших в функции N+1 ты будешь обрабатывать в функции N. А все необработаные просто return errorcode; и все. А во вторых, ошибки произошедшие внутри функции N+1 обычно не имеют смысла для функции N-1. Для N-1 - функция N упала с ошибкой и эта ошибка принадлежит N. Функция N-1 просто не знает о существовании функции N+1 и ее списке возможных ошибок. Есть такой принцип: инкапсуляция. К ошибкам он тоже применим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:56 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
man_555а обработать её хочется в самой первой, то при классическом подходе надо написать N конструкций доставляющих ошибку наверх.точняк, передаю код ошибки из любых дебрей проги в код возврата приложения. Это надо видеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:59 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34343268&tid=2029270]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
203ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 547ms |

| 0 / 0 |
