На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 11 12 [13] 14 15 ...  31 32  ( Перейти к последнему сообщению )  
> goto vs break & continue , Кроха-сын пришел к отцу и спросила кроха: "goto - это хорошо?"
    Ну и это забыл, видимо
    Цитата applegame @
    Иногда goto вполне себе хорош. Была ситуация, когда в относительно длинной функции в нескольких местах надо было прервать выполнение, сделать несколько операций и выйти из функции. Наиболее простым и понятным вариантом оказался вариант с goto:
    ExpandedWrap disabled
      int foo() {
        ...
        goto end;
        ...
        goto end;
        ...
        goto end;
        ...
        end:
        ...
        return;
      }
    Попытки написать тоже самое структурно приводят к кучам бесполезных и плохо читаемых блоков, проверок и т.п.
    Так что goto иногда можно и должно применять. Религиозные фанатики идут лесом.
      Цитата D_KEY @
      Ну и это забыл, видимо
      :good: :good: :good:
        Цитата D_KEY @
        Ну и это забыл, видимо
        Ага, забыл. Но я не религиозен. Уже не помню что там было. Кажется пилился какой-то внешний модуль для уже написанного на сях сервера ММОРПГ. И эта конструкция - бридж между модулем и сервером. Впрочем полагаю, что сейчас бы я написал по-другому.
          Кстати, D_KEY, хороший Cшный паттерн SEHового __leave. Всяко лучше, чем многоэтажные if

          Добавлено
          Вы как-то забыли, что критикуется не goto, как и вообще передачи управления. Критике подвергается неструктурный подход к архитектуре программы, к которой goto может легко привести. Применение же goto само по себе являться дурным тоном не может.
            В си goto нормальная конструкция для подобных случаев. В C++ разве что для выхода из вложенных циклов и пр. такого. Хотя я уже и не вспомню, когда использовал в плюсовом коде goto...
              Цитата OpenGL @
              Так тут о том и твердят, что это религиозная заморочка, отсутствие которой иногда может помочь написать более читабельный код :)

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

              Цитата OpenGL @
              Если я согласен с какой-либо одной фразой Славяна, то это не означает, что я буду согласен и с остальными :)

              Так ты согласился со всем его постом, а не с конкретной фразой. Я уточнил что он под своим постом, под которым ты согласился, подразумевал. Не более.
                Цитата KILLER @
                Так я и твержу, что с goto написать более читабельный код не получится, чем без него. Это костыль, когда не приходит в голову - как сделать красивее.

                У Qraizer-а получилось.
                Цитата KILLER @
                Так ты согласился со всем его постом, а не с конкретной фразой.

                В посте, с которым я согласился, не было ничего про (не)обязательность разбиения большой функции. Уточнение, в котором ты спрашивал про разбиение, я видел, но с ним я не согласен. И вообще - тебе спорить больше не о чем что ли? :D
                  Цитата OpenGL @
                  У Qraizer-а получилось.

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

                  Добавлено
                  Цитата OpenGL @
                  В посте, с которым я согласился, не было ничего про (не)обязательность разбиения большой функции. Уточнение, в котором ты спрашивал про разбиение, я видел, но с ним я не согласен. И вообще - тебе спорить больше не о чем что ли? :D

                  Про это речь и велась в том посте, перечитай.
                    Цитата OpenGL @
                    У Qraizer-а получилось.
                    Я старался :blush: .
                    Вообще, у меня стойкое ощущение, что разговор идёт в том же духе, как если бы обсуждались "исключения vs коды ошибок". Исключения по своей природе несруктурны, и без них вполне можно прожить, однако многие считают и не без оснований, что зачастую с ними проще. Фактически это означает, что не всегда структурный код лучше несруктурного.
                    С goto такая же петрушка, вот и весь сказ. Просто goto не позволяет покинуть пределы функции. Да, он не будет вызывать деструкторы блоков, пределы которых он покидает, но в пределах функции ненужность этого ввиду отсутствия затрагиваемых локальных объектов относительно несложно ревьюжится, зато работает быстрее. Так же как отсутствие затрагиваемых локальных объектов (будучи доказанным) может служить мотивацией замены исключений на <csetjmp>.
                    Остальные случаи применения goto, несвязанные с обработкой ошибок, можно пересчитать по пальцам.
                      Цитата KILLER @
                      Тот пример выглядит ужасно. Незнаю что у него и где получилось. Но я бы так не делал.

                      Напиши, как бы ты делал.
                      Цитата KILLER @
                      Про это речь и велась в том посте, перечитай.

                      :facepalm: Ну как скажешь. Объяснять семантику слов русского языка и введение в курс элементарной логики мне в общем-то неинтересно.
                        Цитата OpenGL @
                        Напиши, как бы ты делал.

                        Пусть Qraizer сформулирует задачу. Я напишу. Ибо тот код в принципе - отражение одного конкретного мнения, как сделал он.

                        Цитата OpenGL @
                        :facepalm: Ну как скажешь. Объяснять семантику слов русского языка и введение в курс элементарной логики мне в общем-то неинтересно.

                        Объясняю:
                        Цитата Славян @
                        Мы выносим f(x), если её описание длинно, а пользоваться ею придётся не раз, скажем. Аналогично с классами (POINT и т.п.). А вот выносить из функции функцию лишь бы не было goto - однократное занятие, потому и искусственное, а значит - неправильное. ;)

                        В этоп посте, идет речь о том, что выносится все, что описано длинно и будет заюзано не один раз в конечном итоге, так ясно?
                        Сообщение отредактировано: KILLER -
                          Цитата KILLER @
                          В этоп посте, идет речь о том, что выносится все, что описано длинно и будет заюзано не один раз в конечном итоге, так ясно?

                          Да. Хочешь сказать, что из этого следует, что всё, что этим пунктам не удовлетворяет, выноситься не должно?

                          Добавлено
                          Цитата KILLER @
                          Пусть Qraizer сформулирует задачу.

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

                            P.S. Я ж предложил интересную тему для Холивара: методы заранее заложить в дизайн вот такой вот "хибернет", только уровня приложения, а не всего компа.
                              Цитата Qraizer @
                              Вдруг понадобилось научить его по событию сохранять прогресс и терминатиться, а позже при запуске восстанавливать сохранённый прогресс. Всё.

                              P.S. Я ж предложил интересную тему для Холивара: методы заранее заложить в дизайн вот такой вот "хибернет", только уровня приложения, а не всего компа.
                              Файберы ака сопрограммы?
                              Сообщение отредактировано: applegame -
                                Цитата OpenGL @
                                Да. Хочешь сказать, что из этого следует, что всё, что этим пунктам не удовлетворяет, выноситься не должно?

                                Переформулируй, не понял ответа твоего, вернее могу не так ответить, так как не понял смысла того что ты написал. В общем переформулируй вопрос.

                                Цитата OpenGL @
                                В той теме всё есть, в общем-то.

                                Нет там ничего, есть просто код, от фонаря, который вкинул Qraizer.

                                Добавлено
                                Цитата Qraizer @
                                Та чё там формулировать-то. Есть код без всяких излишеств. Вдруг понадобилось научить его по событию сохранять прогресс и терминатиться, а позже при запуске восстанавливать сохранённый прогресс. Всё

                                Ну так по событию и терминатится, а при запуске востанавливать сохраненный прогресс? :-?

                                Добавлено
                                Вообще про эти хибернейты что ты писал Qraizer - можно отдельную тему в холиварах создавать, правда хз что там холиварить, но я точно до 20 мая ниче серьезного не буду писать в принципе, ибо нет времени в принципе. День на работе, вечер - занят под завязку. После 20 мая, ближе к лету, по идее должно появится куча времени. И если ты сформулируешь ТЗ, я очень был бы тебе благодарен, так как у меня после 20 мая будет(я надеюсь) период востановления после C#, и я очень хотел бы чтобы ты эту задачу сформулировал более яснее, я ее добавлю это в закладки, мне это нужно, ибо в тематике ноль полный.
                                Цитата Qraizer @
                                Заодно могу предложить ещё одну тему для холивара: предложите наиболее удачный вариант реализовать "хибернет" в рамках вашего приложения. Сразу предупреждаю, что речь не идёт о том, чтобы переделать существующее приложение, ресь о том, чтобы "хибернет" заранее заложить в архитектуру.

                                Вот например - продолжи мыслю. Например - что за программа(от фонаря например) - плеер там, БД, еще что то? Просто хотя бы немного распиши ТЗ плз. Немного нужно реабилитироваться, как раз пригодится.
                                Сообщение отредактировано: KILLER -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 11 12 [13] 14 15 ...  31 32


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0512 ]   [ 15 queries used ]   [ Generated: 6.05.24, 18:58 GMT ]