Anonymous
Я ищу подходы к именованию исключительных ситуаций, хочу выработать более или менее строгую систему
Anonymous
Чтобы именование ошибок не было размазанным
Nikita
Anonymous
Это, конечно, логично. Но ещё логичнее было бы именовать эти внесистемные, неправильные ситуации.
Anonymous
Anonymous
Я к тому, чтобы использовать какой-то базовый набор слов при именовании исключений. Причем слова сами по себе должны быть кардинально простыми
Все будет смотреться единообразно и красиво только если будут какие-то строгие правила...
Matwey
По-моему сейчас будет спам
Matwey
Этот чел подписался на все чаты
D.
Нет, не будет. Я просто подписаля и все.
Anonymous
о том и речь. Только проблема в "стандарте именований", если можно так сказать
Anonymous
а точнее в его отсутствии
Matwey
Ну так можно про любые классы сказать
Matwey
Нет стандарта именования классов в программе
Anonymous
Matwey
coding style устанавливается волюнтаристическим образом
Matwey
а иногда и не устанавливается
Anonymous
@zamazan4ik а как ты именуешь кастомные исключения? (если нужно дать возможность их поймать и обработать по-особому в catch)
Anonymous
я в курсе как делать кастомные классы для исключений
Anonymous
ДА
Anonymous
ну тогда давай вот я примеры исключительных ситуаций приведу, а ты аргументируешь их именования?
D.
Мой вопрос я не знаю отвечает ли он требованиям чатика. Допустим есть статический метод в A
A newObject(){
return B;
}
A- абстрактный класс
B наследует и реализует A.
Как правильно вернуть объект B из функции A.
Anonymous
Почитать про указатели?
D.
Что за тег для кода ?
Anonymous
доня.
Nikita
/iqtest@FailsBot
доня.
ты бы хоть смотрел что кидаешь
ну я уж не говорю там перевести "Exceptions to Naming Rules" и понять что оно не имеет отношения к программным исключениям.
Anonymous
Есть два класса: Window и Context
Context - это окружение, без которого нельзя работать с командами OpenGL
Window - это окно, в которое можно рисовать что-либо (Context хранится внутри Window)
1)Передали в Window нулевые или отрицательные значения ширины/высоты (invalid_argument, допускаю)
2)ОС отказалась создавать окно (WindowCreationException? Но тогда почему мы отдельно вынесли invalid_argument?)
3)Неудача в создании контекста (либо бзик ОС, либо аппаратура не соответствует требованиям)
4)Недостаточно памяти для создания текстуры (на видеокарте)
Anonymous
Хотя опять же, если есть WindowCreationException и "ContextCreationException", то "ContextCreationException" заворачивается в WindowCreationException? А вот если мне надо понять, что произошел провал именно на этапе создания контекста?
Anonymous
да
Anonymous
у меня больше идеологические проблемы, скажем так
Anonymous
Anonymous
спасибо, гляну
так стоп, я этот кодинг стайл читал, там про именования исключений толком ничего не сказано
Aidar
1) unsigned
Anonymous
Более того, написано "We do not use C++ exceptions."
Aidar
2) какойнить system_error
Aidar
не настолько ошибка чтобы ее отдельно ифать
Aidar
кидайте ошибку создания окна
Aidar
Anonymous
но если получение детального сообщения ошибки - затратная операция, то что делать?
Aidar
проброс исключения это уже значит что чтото пошло не так
Aidar
и затратная операция будет не частой
Aidar
в идеале никогда не вызываться
Aidar
если у вас это поведение не выполняется значит вы делаете чтото не так
Aidar
попахивает джаваспагетти немного
Anatoly
Anonymous
Мм... Ну да, есть немного. Просто я многие вещи рассматириваю с точки зрения программирования графики
Валидность переданных аргументов можно проверить самому (и довольно быстро!), но вот если ф-ция начинает работать неисправно - тут уже сложнее. Можно получить код ошибки, но чтобы получить описание ошибки - нужно выделить массив символов и повторно стучаться к OpenGL за подробным выводом. Я боюсь, что на каждую операцию пойдет дичайший оверхед
Была и другая идея - через callback кешировать исключения в Context, но тогда будет сложно определить в каком же месте произошла исключительная ситуация. В рамках OpenGL, чтобы определить какая ф-ция и в какой строке дала сбой, надо каждый раз вызывать проверку наличия ошибки ._. Можно конечно дебагером попрыгать и выявить это место, но что делать если лог ошибок кидает пользователь программы? Сам факт наличия ошибки (не зная точного контекста возникновения) ни о чем не скажет, это аля мистика
Anonymous
(я про ф-ции OpenGL уже)
Anonymous
но это просто в качестве примера. Не знаю что делать
Anonymous
нет-нет, погоди
Anonymous
сейчас объясню
Anonymous
в рамках OpenGL есть два способа обработки ошибки:
1)после вызова ф-ции OpenGL вызвать ф-цию glGetError
2)внешним callback'ом просто вывести ошибку (но тогда теряется связь с кодом, неизвестно где именно она произошла)
Если делать как в (1), то получаем дичайший оверхед, причем даже если ошибки как таковой и нет. Оверхед на каждую ф-цию OpenGL
Если делать как в (2), то оверхеда как в (1) нет, но страдает информативность (неизвестно какая именно строка кода дала сбой)
Anatoly
Aidar
в 2к17 валидация только при дебаге юзается
Aidar
она существенно замедляет
Anonymous
в 2к17 валидация только при дебаге юзается
огл сильно зависит от железа, на котором исполняется программа. На разных видеокартах от разных производителей поведение тоже может быть разным. Отключить полностью - самоубийство.
Aidar
тем не менее
Anonymous
☕️
а в колбеке на обработку ошибки бектрейс почему не собрать?
Anonymous
Deleted Account
☕️
Aidar
короче
☕️
мы все еще в этом контексте)) или он стал тру ООП?))
Aidar
делай чем угодно
Aidar
но делай отключаемым
Aidar
оберточка