На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 2 3 [4] 5 6 ...  31 32  ( Перейти к последнему сообщению )  
> goto vs break & continue , Кроха-сын пришел к отцу и спросила кроха: "goto - это хорошо?"
    Цитата Повстанець @
    Я конечно подозреваюю, что эти goto содержатся внутри циклов и ветвей условий. Вот собственно так и получается write-only код, который при командной разработке не стоит ровным счётом ни-хе-ра.
    Ну раз догадываешься, как оно должно быть, зачем умничать и говорить, что там что-то не выполнится? :) Опять-же, то, что он write-only - спорно. Не зная, как устроены деструкторы, в аналогичном RAII коде ты будешь разбираться гораздо дольше.
      Цитата OpenGL @
      Не зная, как устроены деструкторы, в аналогичном RAII коде ты будешь разбираться гораздо дольше.
      Не зная как устроены деструкторы ты не будешь разбираться в аналогичном коде. Во всяком случае не у нас на проекте. Инфа 146%.
        Цитата Повстанець @
        Цитата OpenGL @
        Не зная, как устроены деструкторы, в аналогичном RAII коде ты будешь разбираться гораздо дольше.
        Не зная как устроены деструкторы ты не будешь разбираться в аналогичном коде. Во всяком случае не у нас на проекте. Инфа 146%.

        Супер сказано :good:
          Цитата Повстанець @
          Не зная как устроены деструкторы ты не будешь разбираться в аналогичном коде. Во всяком случае не у нас на проекте. Инфа 146%.

          Это конечно хорошо, но не отменяет того, что иногда с goto код действительно становится понятнее и проще :)
            Цитата OpenGL @
            Это конечно хорошо, но не отменяет того, что иногда с goto код действительно становится понятнее и проще :)

            Какие ваши доказательства?
              Цитата D_KEY @
              Какие ваши доказательства?
              Да хоть предмет спора (выход из функции) или выход из вложенных циклов. Сам же знаешь, что в меру иногда вполне неплохо.
                Выход из вложенных циклов - да.
                Выход из функции - только для pure C. В С++ это костыль. Ну разве что при активном использовании сишного API, но и тут можно обертки завести(а в некоторых случаях достаточно shared_ptr + кастомного deleter'а).
                Сообщение отредактировано: D_KEY -
                  Вложенные циклы уже сами по себе настораживают.
                    Цитата korvin @
                    AFAIK, это заметно дороже, чем Go to
                    Отнюдь. Локальная размотка стека дёшева, это размотка, затрагивающая исполнительные блоки разных функций, может быть дорога. В тому же универсальные решения учитывают любые способы покинуть исполнительный блок, включая longjmp(). Если пробовать писать свой подобный велосипед, универсальный не получится проще и/или быстрее.
                      Цитата applegame @
                      Иногда goto вполне себе хорош. Была ситуация, когда в относительно длинной функции в нескольких местах надо было прервать выполнение, сделать несколько операций и выйти из функции. Наиболее простым и понятным вариантом оказался вариант с goto

                      Может все же проще:
                      ExpandedWrap disabled
                        do {
                         ...
                         break;
                         ...
                         break;
                         ...
                         break;
                         ...
                        } while (false);

                      ?
                        или так:
                        ExpandedWrap disabled
                          void process(data)
                          {
                            ...
                            return;
                            ...
                            return;
                            ...
                            return;
                            ...
                            return;
                          }
                           
                          void main()
                          {
                          //...initializing
                            process(data);
                          //...releasing
                          }
                          Цитата D_KEY @
                          Ну разве что при активном использовании сишного API, но и тут можно обертки завести(а в некоторых случаях достаточно shared_ptr + кастомного deleter'а).
                          Именно, так и было, много сишного апи. Обертки только усложняют и замедляют. Еще раз повторяю, зачем городить обертки, RAII и прочее только ради того чтобы сказать самому себе: "я победил goto!!!". goto применяется крайне редко, как правило в очень простых и понятных случаях вроде описанных.

                          Добавлено
                          Цитата Chow @
                          Может все же проще
                          Вряд ли, терпеть ненавижу циклы, которые на самом деле не циклы. Видим do и думаем, что сейчас что-то будет крутиться, а на самом деле все ради break. Сомнительное решение.
                            Цитата applegame @
                            Именно, так и было, много сишного апи. Обертки только усложняют и замедляют. Еще раз повторяю, зачем городить обертки, RAII и прочее только ради того чтобы сказать самому себе: "я написан понятный, надёжный, простой код!!!"

                            fixed
                              Цитата MyNameIsIgor @
                              fixed
                              cut and distorted.
                              Сообщение отредактировано: applegame -
                                Цитата applegame @
                                Еще раз повторяю, зачем городить обертки, RAII и прочее только ради того чтобы сказать самому себе: "я победил goto!!!".

                                Так не для этого городить надо. Идиома RAII тем хороша, что ты с одной стороны, знаешь, когда и что произойдет, а с другой - не делаешь это руками, т.к. все происходит в автоматическом режиме. На этом фоне даже finally выглядит костылем, а ты про goto...
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 2 3 [4] 5 6 ...  31 32


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