1. C# / Говнокод #18936

    +8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public TD GetColumn(int i) {
                try {
                    return this.Columns[i];
                } catch {
                    return this.Columns[i - 1];
                }
            }

    в продолжение парсера

    Запостил: Lokich, 29 Октября 2015

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

    • Нету пятой колонки? Окей, вернём четвертую, никто же не заметит...
      Ответить
      • Нету первой колонки? Вернём нулевую, никто же не заметит...
        Ответить
        • Нету нулевой - вернём минус первую таки наебнёмся с исключением.
          Ответить
          • Нету 6? вернем 5! нет 5? ну тогда наебнемся с исключением
            Ответить
      • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
        Ответить
        • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
          Ответить
          • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
            Ответить
            • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
              Ответить
              • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
                Ответить
                • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
                  Ответить
                  • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
                    Ответить
                    • Нету пятой колонны? Окей, вернём четвертую, никто же не заметит...
                      Ответить
    • Обобщим идею:
      public TD GetColumn(int i) {
          try {
              return this.Columns[i];
          } catch {
              return GetColumn(i - 1);
          }
      }
      Ответить
      • Теперь точно не упадет!
        Ответить
        • Не, это ж c#. Упадёт или по stack overflow (если компилятор не умеет в хвостовую рекурсию) или по overflow при вычитании (если умеет).
          Ответить
          • Тут в любом случае блоки catch вложенные, значит, стек понадобится хотя бы для исключений.
            Ответить
            • > стек понадобится хотя бы для исключений
              Нафига? Мы же рекурсию из catch делаем, а не из try.
              Ответить
          • бесконечность и дааааааааалие....overflow
            Ответить
          • Нубский вопрос: разве в шарпах есть оптимизация хвостовой рекурсии?
            Ответить
            • Хер знает, если честно, я последний раз шарп палочкой тыкал лет 7 назад...
              Ответить
              • Интересно tail-opt как-то поможет в случае try~finally выше?
                Ответить
                • В try - всяко нет. А вот в finally/catch - должен. Там же exception frame уже закрылся.
                  Ответить
                  • Дык, а толку, там же в дерево распидорашивает.
                    Это как просить tail-optim   помочь с квиксортом.
                    Ответить
              • Недавно же обсуждали - нету её там.
                Ответить
            • нет, апликуха падает с unhandled exception of type System.StackOverflowException
              Ответить
              • все-таки вопрос был про хвостовую рекурсию, про стэковерфлоу то понятно
                Ответить
                • Ну дык была бы оптимизация - не было бы переполнения стека.
                  Ответить
                  • вот борманд всегда дело говорит

                    его даже нахуй посылать неохото, не то что остальных прыщавых тупых дрочунов из этого говносайтинка
                    Ответить
                • >>хвостовую рекурсию
                  ой-ой-ой, какие слова-то мы знаем! Давай еще, про монады скажи.

                  А сам-то небось на PHP и вордпрессе за хлеб с водой наяриваешь
                  Ответить
                  • В PHP нет оптимизации хвостовой рекурсии, зато есть ini-конфиг и интерфейсы, которые необязательно соблюдать. А еще есть ТЕХПОДДЕРЖКА хостера, которая может поправить PHP.IИI если хорошо попросить, но не будет, потому что ей похуй на пыхоарангутангов. @mysql_fetch_array(@mysql_fetch_array(@m ysql_fetch_array(@mysql_fetch_array(@mys ql_fetch_array(@mysql_fetch_array(@mysql _fetch_array(@mysql_fetch_array(@mysql_f etch_array(@$GLOBALS['BAZA_DANNYH']))))))))) or die("Заплатите мне кто-нибудь!!!11111");
                    Ответить
                    • Хорошо сказал я аж прослезился. А еще в php есть Битрикс
                      Ответить
            • показать все, что скрытоЕсть, авторитетно заявляю.
              Ответить
        • >Теперь точно не упадет!
          вы уверены?
          GetColumn(-1);
          Ответить
      • public TD GetColumn(int i) {
            try {
                return this.Columns[i];
            } catch {
                return this.Columns[random(0, ColumnCount())];
            }
        }
        Ответить
        • Надо слить эти два способа:
          > this.Columns[random
          GetColumn(random
          Ответить
      • Отказоустойчивая система.
        Ответить
    • >2015
      >c#
      >this.
      Ответить
      • а this это плохо?
        Ответить
        • this is хорошо
          Ответить
        • а нахуя?
          Ответить
          • Привычней для тех, кто привык к JS.
            А вообще, с "this." можно в теории в лабораторных условиях некоторых ошибок избежать.
            Ответить
            • Привычней-хуичней.
              Ты же придерживаешься кодконвеншнов в других языках? Будь добр или иди дальше на джиэсе лупи.
              Ответить
    • public TD GetColumn(int i) {
          try {
              return GetColumn(i);
          } finally {
              return GetColumn(i - 1);
          }
      }


      Теперь точно не упадёт. Не благодарите.
      Ответить
      • а где выход из рекурсии? упадет stackoverflowexception
        Ответить
        • Не упадёт. Я гарантирую это.Если скомпилится конечно.
          Ответить
          • ну тогда лан, сделай пулреквест и в продакшн
            скомпилится офк
            Ответить
            • а хуй там: Control cannot leave the body of a finally clause
              Ответить
              • Use Java, nihau.
                http://ideone.com/IzzLsd
                stackoverflowexception не будет.
                Ответить
                • в джаве в отличии от шарпов можно так и это компилится и это работает
                  try {
                  return 1;
                      } finally {
                  return 2;
                      }


                  Не знаю как в джаве, но в .нете после 1.0 или 2.0 stackoverflowexception & outofmemoryexception теперь не обрабатываются в try catch блоках (прув ми вронграйт)
                  Ответить
      • Пошел в армию, пидар!
        Ответить
        • Зайди-ка ко мне в медшарагу, а лучше - прямо в лаборантскую.
          Я уже резиновый член припас.
          Ответить
      • показать все, что скрытоА как это работает?
        Ответить

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