На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (37) « Первая ... 26 27 [28] 29 30 ...  36 37  ( Перейти к последнему сообщению )  
> C vs C++ , Не опять а снова
    Кстати, если кто не видел - в этой теме тоже немного коснулись темы о кодах возврата и исключениях. Если есть какие-то комментарии по поводу написанного там, то предлагаю тут дообсудить.
      Цитата Wound @
      И что? Как тебе это помогает помнить какие исключения может кидать функция?
      Тут никакой разницы с возвратом ошибок нет. Как это тебе поможет помнить какие ошибки может вернуть функция?
        Цитата Wound @
        А я тебе рассказываю о том, что ты можешь вылететь из функции тогда, когда вылетать тебе из нее нельзя.
        Вообще-то об этом-то и толкуют. Мне вот всегда это коллинеарно. На каждой строке. На каждой команде процессору.

        Добавлено
        Цитата Wound @
        Прикрути к Сям исключения, программные, никто не будет их использовать, потому как от них там будет больше гемороя, чем пользы.
        Будет. В конце-концов SEH придуман аккурат для не ООП языков. А VEH для компиляторов, не поддерживающих расширения синтаксиса SEH.

        Добавлено
        Цитата D_KEY @
        Да, exception safety тема сложная, но вполне реальная.
        Не сложнее портабельного кодинга.

        Добавлено
        Цитата D_KEY @
        Qraizer, что думаешь?

        ИМХО дело привычки. Мне неудобно. Мне удобно, когда запросил сервис и работаешь себе дальше. В таком контексте нужно либо просто работать дальше, либо сразу же проверить и отреагировать, ежели чё, прежде чем работать дальше. Но кому-то привычнее асинхронность, ему будет удобно.
          Цитата OpenGL @
          Нет, не понимаю. Если есть пара функций init/deinit, то оборачивать их в RAII имеет смысл почти всегда, что я и делаю. В любой программе сложнее helloworld-а это даёт ощутимый профит. И причём тут вообще классы? В твоём понимании любой класс это RAII обёртка что ли?

          Ты говоришь во первых об очевидных вещах. Причем тут это, если речь шла совершенно о другом?

          Цитата OpenGL @
          Нивапрос, покажи пример.

          Да вот хотя бы, перепиши пример: Как прочитать строку с реестра?

          Цитата OpenGL @
          Нет. Я тебе пытаюсь доказать, что "вылететь нельзя" встречается весьма редко, если активно использовать RAII. Сможешь пример привести? Пока что всё, что ты приводил, прекрасно им разруливалось как по учебнику.

          Да хотя бы в каком нибудь веб сервисе. Вылетел - упал сервис.

          Цитата OpenGL @
          А ты точно читатель? :D Я как раз прямо противоположное писал - что нафиг не надо ловить все исключения.

          Точно так же можно сказать - нафиг не надо проверять все коды ошибок. Просто в отличии от исключений у тебя в сигнатуре функции прописано что она может возвращать, что она принимает. Но у нее нигде не написано какие исключения она кидает. Соответственно понять что функция возвращает белеберду проще, чем какие исключения она кидает.

          Цитата OpenGL @
          А что, есть что ли? :D При программировании в моём подходе на них нарваться нереально.

          При программировании в твоем подходе утечки есть, неизбежно. Иначе нужно писать без багов. :-?

          Цитата OpenGL @
          Я даже когда на Qt программирую, где исключения юзать нежелательно, RAII использую активно. Так что садись, два - ты не понял, для чего оно нужно

          Так я тебе написал для чего ты приплел RAII, о котором я тебе напомнил в данном контексте. Мы не обсуждали тут для чего нужен RAII, мы обсуждали то, как ты поймешь какие исключения тебе нужно обрабатывать. И тут ты просто съехал на RAII, о котором собственно я тебе и напомнил. Но речь шла не про него. А теперь ты тупо меняешь контекст обсуждения. Ты как в том мультике про рыбака. Тебе говоришь фразу в одном контексте, ты ее перекручиваешь и начинаешь спорить про нее. Хотя речь шла не про это.

          Добавлено
          Цитата D_KEY @
          И не надо все. RAII для ресурсов. Вот ресурсы нужно все оборачивать.

          Мат, да речь шла совершенно не про это. Перепиши ты пример с вычиткой/читанием из/в реестр. Я хочу посмотреть как ты его перепишешь.

          Цитата D_KEY @
          Можешь чуть подробнее? Да, exception safety тема сложная, но вполне реальная.

          Вот тебе в текущей функции нежелательно вылететь просто так наверх. Неважно юзерские данные например потеряются, еще что то. Что ты напишешь ?

          Цитата D_KEY @
          Так не нужно знать. В таком случае считаешь, что исключения могут возникнуть, какая тебе разница, какие именно? Тебе нужно решить или обрабатывать или прокидывать или сконвертировать(в какой-то тип или другое исключение). А дальше твоя задача понять, какую гарантию ты сможешь/будешь обеспечивать и сделать соответствующие действия. Это не слишком тривиально, но вполне нормально.

          Внезапно, но при таком подходе с кодами возврата все то же самое.

          Добавлено
          Цитата Qraizer @
          Вообще-то об этом-то и толкуют. Мне вот всегда это коллинеарно. На каждой строке. На каждой команде процессору.

          Есть очень большая разница когда тебе коллинеарно и пользователю коллинеарно. А еще есть очень большая разница между тем когда ты пишешь сам что то, и пишешь в команде что то. Особенно, если команда у тебя не из 8 человек, а из пары сотен, и куча модулей. И в твой проект или какой то общий могут править куча людей, он достаточно большой и сложный. Между всеми этими вещами существует большая разница.
          Когда ты сам пишешь свой проект с несколькими человеками, вы можете юзать все что угодно, хоть те же метки, и вам будет абсолютно коллинерано на то, что об этом думают другие.


          Цитата Qraizer @
          Будет. В конце-концов SEH придуман аккурат для не ООП языков. А VEH для компиляторов, не поддерживающих расширения синтаксиса SEH.

          SEH немного для другого нужен вообще то. А обычные программные исключения в Си сродни goto. Какой в них смысл, я лично не понимаю. В языках где есть классы, исключения вполне себе оправданы, можно наследовать целые классы ошибок, обрабатывать конкретные или общие, или другие. В Си, ИМХО, с этим только гемороя будет больше.
          Сообщение отредактировано: OpenGL -
            Цитата Wound @
            Вот тебе в текущей функции нежелательно вылететь просто так наверх.

            Нежелательно или нельзя? Если первое, то обрабатываешь то, что знаешь, а какие-то неожиданные вещи пропускаешь выше. Если второе(нельзя), то ставишь noexcept, все отлавливать, обрабатываешь что можешь, что не можешь - логируешь(а в дебаге скорее всего и упасть не страшно).

            Цитата
            Внезапно, но при таком подходе с кодами возврата все то же самое.

            Да, но придется на каждом уровне в каждой функции при каждом вызове писать один и тот же однообразный код. Зачем, если, как ты сейчас сказал, разницы с исключениями нет?
              Цитата D_KEY @
              Нежелательно или нельзя? Если первое, то обрабатываешь то, что знаешь, а какие-то неожиданные вещи пропускаешь выше. Если второе(нельзя), то ставишь noexcept, все отлавливать, обрабатываешь что можешь, что не можешь - логируешь(а в дебаге скорее всего и упасть не страшно).

              Ты вполне себе можешь даже не осознавать что вылетать тебе тут нежелательно или нельзя. :-? Или ты думаешь баги специально делают?

              Цитата D_KEY @
              а, но придется на каждом уровне в каждой функции при каждом вызове писать один и тот же однообразный код. Зачем, если, как ты сейчас сказал, разницы с исключениями нет?

              Эээ, какой еще однообразный код? Такой однообразный код ты будешь и с исключениями писать :-?
                Цитата Wound @
                Ты вполне себе можешь даже не осознавать что вылетать тебе тут нежелательно или нельзя. :-? Или ты думаешь баги специально делают?

                Все могут ошибиться. А то, что вылетать нельзя, ты поставил в качестве условия :-?
                Все равно, если я владею какими-то данными, то мне нужно корректно с ними работать. Да, баги случаются, но как это связано с обсуждением?

                Цитата
                Эээ, какой еще однообразный код? Такой однообразный код ты будешь и с исключениями писать :-?

                Проверки кода возврата. С исключениями не буду, потому как в большинстве случаев я их просто пропущу выше(т.е. try...catch не будет там).
                Сообщение отредактировано: D_KEY -
                  Цитата Wound @
                  Причем тут это, если речь шла совершенно о другом?

                  Ты говоришь какие-то общие слова без какой-либо конкретики.

                  Цитата Wound @
                  Да вот хотя бы, перепиши пример: Как прочитать строку с реестра?

                  Ты тупее примера не мог найти? :lool: Он не содержит нетривиальной логики и переписывается c exception safety совершенно в лоб как и всё прочее, что тут до этого приводилось. Какие с этим проблемы могут возникнуть?

                  Цитата Wound @
                  Да хотя бы в каком нибудь веб сервисе. Вылетел - упал сервис.

                  Так и я могу - исключение вылетело, но сервис продолжил работу :lol:

                  Цитата Wound @
                  Точно так же можно сказать - нафиг не надо проверять все коды ошибок.

                  Тогда в случае ошибки будет происходить чёрте что и сбоку бантик. Нахрен оно надо?

                  Цитата Wound @
                  Так я тебе написал для чего ты приплел RAII, о котором я тебе напомнил в данном контексте.

                  Я приплёл? :lool: Перечитай что ли срачик - RAII тут приплёл как раз ты, вот в этом сообщении:
                  Цитата Wound @
                  Ты можешь начать аппелировать к RAII, но извини - это из серии как надо делать.


                  Цитата Wound @
                  мы обсуждали то, как ты поймешь какие исключения тебе нужно обрабатывать.

                  А как ты поймёшь, что тебе некий функционал в отдельный модуль надо вытащить, например? Определение того, какие ошибки ты можешь обработать здесь и сейчас, не нарушив контракты это один из скиллов программиста уровня миддла и выше. Если ты им не обладаешь, то у меня для тебя плохие новости :D
                    Цитата Wound @
                    При программировании в твоем подходе утечки есть, неизбежно. Иначе нужно писать без багов. :-?

                    Откуда она возьмётся, если все ресурсы у меня в RAII врапперах? Ну цикл на shared_ptr я могу сварганить, да, но такую ошибку у нас только джуниоры допускают, когда только-только узнают про них и начинают запихивать их куда попало, я же shared_ptr использую только для общего владения (что само по себе, кстати, не такая уж часто встречающаяся вещь), а граф владения всегда ацикличный. По факту последний раз я сталкивался с утечкой когда юзал одну сишную библиотеку, внутри которой эта самая утечка и была.
                      Исключения настолько же "утечкоопасны", как и возврат ошибок. Никакой разницы. И там и там можно напортачить. Причем способы "напортачивания" весьма похожы, так же как и способы усчтранения этих утечек. Вообще непонятно, накой вы прицепили к исключениям утечки и теперь спорите хз о чем.
                      Сообщение отредактировано: applegame -
                        Цитата applegame @
                        Вообще непонятно, накой вы прицепили к исключениям утечки и теперь спорите хз о чем.

                        Это что-то необычное от Кили? :D
                          Цитата Wound @
                          SEH немного для другого нужен вообще то. А обычные программные исключения в Си сродни goto. Какой в них смысл, я лично не понимаю.
                          Надеюсь, мне не придётся ещё раз постить своё словоблудие. Там пример с SEH, аналогичный твоему примеру с goto, взятого с MSDN, вроде бы. А дальше посты конкретно о SEH и его связи с C++EH в контексте WinAPI.
                            Цитата D_KEY @
                            Все могут ошибиться. А то, что вылетать нельзя, ты поставил в качестве условия

                            Так ты тут такие же условия ставишь на все. Я все оберну, я везде напишу, я все перехвачу. Так смысл тогда о чем то говорить.

                            Я нигде не пишу что коды возврата хуже или лучше исключений. Мне вообще фиолетово, я использую и то и другое. Просто OpenGL написал что "ПОмнить какие исключения кидает функция так же просто, как и помнить какие ошибки при кодах возврата она возвращает". Я с ним не согласился. Причем писал он это тебе, на что ты ему вроде тоже возражал. А дальше тема перешла в нечто другое. Потому что кто то не понял судя по всему о чем идет речь. Я не знаю как еще объяснить.
                            Возьми например абстрактно посмотри на сигнатуру функции: bool is_open();
                            Да мне ничего не нужно делать, чтоб понять какие ошибки эта функция может возвратить. либо true, либо false.
                            ВОзьми другую функцию, пусть она возвращает enum - Опять же проблем нет. Просто бери enum и смотри.
                            Приведи мне пример когда я так же могу помнить/понять какие исключения функция может кинуть только взглянув на ее сигнатуру?

                            Цитата D_KEY @
                            Проверки кода возврата. С исключениями не буду, потому как в большинстве случаев я их просто пропущу выше(т.е. try...catch не будет там).
                            С

                            Пропускай коды возврата выше, в чем проблема? return - ровно такой же throw, только вид с боку.

                            Цитата OpenGL @
                            Ты говоришь какие-то общие слова без какой-либо конкретики.

                            Я тебе уже два раза, ЕМНИП, скопипастил о чем я говорил. Ты не читаешь. Какую тебе еще конкретику нужно? Ты написал:
                            Цитата OpenGL @
                            и помнить о том, что тут может броситься исключение не сложнее, чем помнить о том, что надо код возврата проверить.

                            Я с этим утверждением не согласился. А дальше ты пошел лить воду какую то про то, как ты клево все перехватываешь выше.
                            Мог бы просто тогда написать:
                            "Я весь блок Main Оберну в try/catch(...)" и вообще плевать на все эти исключения. Ты до сих пор видимо так и не понял что тебе пытаются доказать. Теперь уже переключился на RAII зачем то, хотя причем он тут? Твой RAII сродни тому, что я проверил ресурс на ошибку. Я забыл проверить - значит ты ровно так же забыл обернуть в класс ресурс, и забыл написать обработку исключений.
                            Но у тебя почему то ничего не забывается, ты все оборачиваешь. А я везде забываю проверять коды возврата.

                            Цитата OpenGL @
                            Ты тупее примера не мог найти? :lool: Он не содержит нетривиальной логики и переписывается c exception safety совершенно в лоб как и всё прочее, что тут до этого приводилось. Какие с этим проблемы могут возникнуть?

                            Так перепиши, никаких проблем там возникнуть не может, ты просто перепиши, как считаешь правильным.

                            Цитата OpenGL @
                            Так и я могу - исключение вылетело, но сервис продолжил работу

                            С чего вдруг он продолжил работу? Разве что после рестарта, так это уже по сути программа грохнулась, может быть кто то в этот момент другой метод дергал, и там какие важные данные хранились.
                            У тебя так все просто я смотрю. О чем тогда можно спорить?

                            Цитата OpenGL @
                            Я приплёл? :lool: Перечитай что ли срачик - RAII тут приплёл как раз ты, вот в этом сообщении:

                            Так все верно, я его привел потому, что знал что ты будешь его приводить. Поэтому я и написал, что он тут не причем. Не нужно его сюда приплетать. А ты за него зубами вцепился, зачем то.

                            Цитата OpenGL @
                            А как ты поймёшь, что тебе некий функционал в отдельный модуль надо вытащить, например? Определение того, какие ошибки ты можешь обработать здесь и сейчас, не нарушив контракты это один из скиллов программиста уровня миддла и выше. Если ты им не обладаешь, то у меня для тебя плохие новости

                            :facepalm: Уууу, теперь начал фразы из контекста предложения выдирать, вот же ты писал:
                            Цитата OpenGL @
                            и помнить о том, что тут может броситься исключение не сложнее, чем помнить о том, что надо код возврата проверить.

                            Именно это и я написал, возможно неверно выразился. Короче ну тебя в баню, реально троллем каким то стал. Даже не понимаешь о чем идет речь. Скажи слово, ты сразу переходишь на обсуждение этого слова. Скажи предложение, ты выдерешь из него фразу и приколебешься к фразе, ну и что что фраза в контексте предложения совершенно о другом.
                            А ну давай, программист уровня миддл и выше, приведи мне сигнатуру функции, из которой я пойму какие исключения мне нужно из нее обработать? Я тебе приводил функцию выше, ты нихрена мне не привел. Какими то общими фразами отделался. И мы с тобой уже это обсуждали. Ты ждешь одно исключение, а летит тебе другое исключение. После чего ты съехал на RAII. Ты даже банально не можешь признать простой вещи, что у тебя может полететь исключение, которое ты не ждешь. Вернее ты тут же на RAII съезжаешь зачем то. Хотя речь то идет про помнить какие исключения кидает функция, а не про то, что любой ценой где то словить исключение.

                            Добавлено
                            Цитата Qraizer @
                            Надеюсь, мне не придётся ещё раз постить своё словоблудие. Там пример с SEH, аналогичный твоему примеру с goto, взятого с MSDN, вроде бы. А дальше посты конкретно о SEH и его связи с C++EH в контексте WinAPI.

                            Так а что там в том ликбезе? Как работает SEH ? И чего, не понимаю? Ну есть и фиг бы с ним, работает и хорошо. Я не встречал что бы его юзали везде и всюду в Си. В основном для того, что б при падении что то там сделать. Но чтоб прям повсеместно, не встречал как то.

                            Добавлено
                            Цитата applegame @
                            Вообще непонятно, накой вы прицепили к исключениям утечки и теперь спорите хз о чем.

                            А вот спроси у OpenGL, нахрена он начал приводить RAII сюда и объяснять как он все ресурсо круто оборачивает в классы.
                            Но на вопрос как он собрался помнить какие исключения ему функция может сгенерировать отвечать категорически не хочет.
                            Сообщение отредактировано: Wound -
                              Цитата Wound @
                              Пропускай коды возврата выше, в чем проблема?

                              Так это и будет тот самый мусорный код.
                                Цитата OpenGL @
                                Откуда она возьмётся, если все ресурсы у меня в RAII врапперах? Ну цикл на shared_ptr я могу сварганить, да, но такую ошибку у нас только джуниоры допускают, когда только-только узнают про них и начинают запихивать их куда попало, я же shared_ptr использую только для общего владения (что само по себе, кстати, не такая уж часто встречающаяся вещь), а граф владения всегда ацикличный. По факту последний раз я сталкивался с утечкой когда юзал одну сишную библиотеку, внутри которой эта самая утечка и была.

                                Откуда вообще могут возникнуть проблемы с кодами возврата, если я все везде проверю? :D Ну забуду я что то там проверить, да, но такую ошибку у нас только джуниоры допускают, когда еще с непривычки не привыкли проверять ресурсы перед использованием. Ровно тоже самое. :whistle: :-?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (37) « Первая ... 26 27 [28] 29 30 ...  36 37


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0864 ]   [ 15 queries used ]   [ Generated: 28.04.24, 11:30 GMT ]