1. C++ / Говнокод #5540

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    try
    {
      for(..)
      {
         for(..)
         {
            if(...)
               throw;//генерация исключения
         }
      }
    }
    catch(..)
    {
    }

    Кому-то религия не позволяет юзать goto. Сорри, если было.

    Запостил: CHayT, 05 Февраля 2011

    Комментарии (32) RSS

    • +доставляющий комментарий. Копипаста из чьего-то технобложика, вроде как объясняющая применение исключений.
      Ответить
    • Охренеть, тот же goto, только с кучей ненужного оверхеда.
      // КО
      Ответить
    • В некоторых диалектах Паскаля можно дать внешнему циклу имя, и написать break имя_внешнего_цикла во внутреннем.
      Ответить
      • вы опять с паскалем?
        это называется метка, и почти все современные языки это позволяют сделать break или continue
        Ответить
        • А мне нравится
          for(;;){
          ...
          for byRow (;;){
          ...
          for(;;){
          ...
          for(;;){
          ...
          break byRow;
          ...
          };
          ...
          };
          ...
          };
          ...
          };
          Ответить
        • break и continue на 1 уровень есть везде, это понятно. А на 2 уровня, и чтобы без goto?
          Ответить
          • LOOP1: for(;;){
            LOOP2: for(;;){
            break LOOP1;
            }
            }
            Ответить
            • break LOOP1; - в c++ такого нет.
              Ответить
            • Что-за язык?
              Ответить
              • java
                Ответить
                • 1)А метку можно ставить где угодно или только около цикла?
                  2)contiue поддерживает с меткой?
                  Ответить
                  • 1. где угодно, но break/continue может быть только в цикле
                    2. да
                    Ответить
                    • LOOPGiGi:
                      a=5;
                      ...
                      LOOP1: for(;;){
                      LOOP2: for(;;){
                      break LOOPGiGi;
                      }
                      }
                      а так можно?
                      Ответить
                      • нет.

                        проверил:
                        public class T {
                          public static void main(final String[] args) {
                            LOOPGiGi: // Warning: The label LOOPGiGi is never explicitly referenced
                            System.out.println(); // помечать обьявления нельзя
                            int a = 5;
                            // ...
                            LOOP1: for (;;) {
                              LOOP2: for (;;) {
                                break LOOPGiGi; //Error: The label LOOPGiGi is missing
                              }
                            }
                          }
                        }
                        Ответить
                        • Спасибо. Хорошая новость. :)
                          Ответить
                          • однако, за десятилетнюю практику метки использовал всего пару раз, а коллега с 5-летним опытом работы с явой признался, что вообще про метки не знал.

                            Наверное, это в принципе редчайшая фишка явы.
                            Ответить
                • Ненужный синтаксический сахар! В Шарпе этого нет!

                  Ну хоть в чём-то жаву можно обвинить :). А то всё шарп обвиняют - мол, сахарка много :)
                  Ответить
          • На самом деле очень полезное ограничение: разрешить ставить метку только у цикла.
            Ответить
    • Кому-то религия не позволяет использовать другие типы циклов кроме for
      Ответить
    • А вынести форы в функции с возвратом була? лямбды
      Ответить
      • >лямбды
        Приведите пример для данного случая.
        Ответить
        • Ну, тупо вот как-то так

          bool subfor(...)
          {
              for (...)
              {
                  if (...)
                      return false;
              }
              return true;
          }
          .....
          for (...)
          {
              if (!subfor())
                  break;
          }

          М?
          Ответить
          • Где здесь лямбда?
            Ответить
            • Лямбдой можно сделать subfor, чтобы не генерить одноразовые плоти. Это создает иллюзию меньшего размера кода, что и хочется многим.
              Ответить
    • Я не могу точно сказать, когда я влюбился в Мэта. Это не было чем-то спонтанным, скорее это было накоплением всех моих чувств, страхов и желаний. Трудно не ревновать, когда видишь, как он проводит время в кругу своих друзей. Как парни играют и резвятся, а тебе приходится зубрить днём и ночью уроки, чтобы хоть как-то доказать отцу, что ты не пустое место. Это тяжело. А потом Мэта отбирают в школьную футбольную команду, и ты становишься свидетелем того, как он приносит свою первую победу своей команде, да и всей школе в целом. И вот его уже любит вся школа, а ты всё тот же Остин, с кучей комплексов и с огромной неуверенностью в себе.
      Ответить

    Добавить комментарий