Си диез / Говнокод #18936 Ссылка на оригинал

0

  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 Lokich, (Updated )

Комментарии (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.
            Ответить
        • Нубский вопрос: разве в шарпах есть оптимизация хвостовой рекурсии?
          Ответить
          • Хер знает, если честно, я последний раз шарп палочкой тыкал лет 7 назад...
            Ответить
              • В 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 есть Битрикс
                    Ответить
    • public TD GetColumn(int i) {
          try {
              return this.Columns[i];
          } catch {
              return this.Columns[random(0, ColumnCount())];
          }
      }
      Ответить
      • Надо слить эти два способа:
        > this.Columns[random
        GetColumn(random
        Ответить
        • Привычней для тех, кто привык к JS.
          А вообще, с "this." можно в теории в лабораторных условиях некоторых ошибок избежать.
          Ответить
          • Привычней-хуичней.
            Ты же придерживаешься кодконвеншнов в других языках? Будь добр или иди дальше на джиэсе лупи.
            Ответить
  • public TD GetColumn(int i) {
        try {
            return GetColumn(i);
        } finally {
            return GetColumn(i - 1);
        }
    }


    Теперь точно не упадёт. Не благодарите.
    Ответить
        • ну тогда лан, сделай пулреквест и в продакшн
          скомпилится офк
          Ответить
              • в джаве в отличии от шарпов можно так и это компилится и это работает
                try {
                return 1;
                    } finally {
                return 2;
                    }


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

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8