"PHP" / Говнокод #19152 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
public function validate($value) {
    try {
        $date = new \DateTime($value);
        return true;
    } catch (\Exception $e) {
        return false;
    }
}

DateTime Validator

Запостил: bykovski bykovski, (Updated )

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

  • Объясните мне-"блондинке" в чем говнокожесть данного кода?
    И еще - зачем тут catch (\Exception $e) ?
    Ответить
    • > в чем говнокожесть данного кода
      В использовании исключений для неисключительных ситуаций (питонистам не понять, для них даже конец просматриваемого массива - исключительная ситуация).
      Ответить
      • Да, это правда - я питоню по-маленьку 🙂 А ещё с-плюс-плюшу и сю 🙂 Но все равно не понять)
        Ответить
      • Вы про StopIteration?
        Ну если exception стоит столько же, сколько и обычная проверка то в чем проблема?

        В java вон есть checked exceptions, и все те три человека в мире которые умеют ими пользоваться -- они ими пользуются и рады
        Ответить
      • А в чем проблема-то, кроме незначительного падения скорости?

        >питонистам не понять, для них даже конец просматриваемого массива - исключительная ситуация
        Для сишников это вообще фатальная ситуация, и что?
        Ответить
        • > А в чем проблема-то
          Да хуй с ней, со скоростью. Просто читается плохо. Особенно если автор ловит не конкретное исключение, а абстрактный Exception, а в try засунул побольше разных вызовов.

          А если юзаешь дебаггер, то из-за подобной хуйни нельзя включить "break on exception" ибо будут сотни ложных остановок.

          > Для сишников это вообще фатальная ситуация
          Ты не понял. Под концом массива имеется в виду не вылет за границу, а StopIteration во время обхода массива. А обращение по кривому индексу - таки исключительная ситуация.
          Ответить
          • Так это не выход за границу массива, а исчерпание итератора же.Протокол foreach.

            > Просто читается плохо.
            Зато безопасно по умолчанию.

            >нельзя включить "break on exception"
            Он в питоне вообще есть? Алсо, зачем это там?
            Ответить
    • Кроме того что продуцировать эксепшены в ЛЮБОМ языке программирования это не камефлю, в данном случае еще будет валидны такие данные как "now", "2 days", "@123352452341" - не думаю что это ожидалось когда делали валидацию
      Ответить
        • Я запомнил год его рождения через число e (хотя предлагали наоборот запоминать).
          Ответить
          • А я слышал, как другие запоминают, но сам не помню ни e, ни год рождения Толстого, я их наверно и не использовал.
            Кстати, кому-нибудь знание e пригодилось? Вот знание пары знаков пи иногда нужно, а как с e? По идее, человек либо использует сразу функцию exp, либо заданную где-то в стандартной библиотеке константу (если это зачем-то понадобилось), либо для прикидки на бумажке экспоненту раскладывает в ряд и работает с аргументом.
            Ответить
      • "now", "2 days"

        Почему? Это вполне удобно.
        $dateFrom = (new DateHelper('now - ' . self::DATE_FROM_INTERVAL . ' days'))->dbFormat();
        Ответить

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

Помни, guest, за тобой могут следить!

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


    8