1. PHP / Говнокод #21593

    −18

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    try{
        $prodotto = $this->ci->phpsession->get( $this->PRODOTTO_SESSION_NAME);
        if(is_object($prodotto) && $prodotto->id==$params['id']){
            throw new Exception();  
        }
        $this->genero($params['id']);              
    }catch(Exception $e){
    
    }

    Код грузит товар из БД. В переменной $param хранятся различные данные, в том числе и id записи. Если id товара, хранящийся в сессии, совпадает с id товара, который нужно загрузить, бросается исключение, которое отлавливается и ничего не делается. Нужна эта конструкция, по мнению разработчика, что бы не грузить товар из БД дважды.

    Запостил: AlexeyRudkovskiy, 27 Октября 2016

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

    • По-своему логично.
      "Если товар уже есть, то ничего не делать"
      Ответить
    • И ведь про if пациент знает...
      Ответить
    • Разумеется, единственное исключение которое может вылететь — то, что кидается из if...

      Вообще смешно, но в окамле относительно нормальная практика кидать исключения для раннего выхода из цикла (там нет return/continue). Соль в том, что для каждого цикла нужно заводить отдельный тип исключений, чтобы случайно не помать чужую ошибку.
      Ответить
      • вообще смешно, случайно поломал твою прямую кишку, проверь
        Ответить
        • Ни разу не смешно починил твою прямую кишку, проверь
          Ответить
      • Ужас. В lua аналогично было, но туда всё-таки завезли...

        З.Ы. break - это catch снаружи цикла, а continue - внутри?
        Ответить
        • > break - это catch снаружи цикла, а continue - внутри?
          И всё это лишь частные случаи delimited continuation...
          Ответить
        • Тот самый случай, когда goto уже не кажется таким уж плохим...
          Ответить
          • в lua 5.1 нет goto
            Выше версии он есть, но эти версии не кто не юзает.
            Ответить
            • И правда, во многие программы встроен lua 5.1. Хотя тот же 5.2 можно скачать в уже скомпилированном виде для многих платформ.
              Ответить
              • большинство библ не переписываются, а версия 5.1 с 5.2 не совместима из-за выпиливаний некоторых функций. Кароче ситуация как с питоном.
                Ответить
                • Мне кажется, что с Питоном получше. Уже много чего переписали на тройку.
                  Ответить
      • Кто сказал "продолжения"? Я точно слышал, кто-то сказал "продолжения"!
        Ответить
      • > Вообще смешно, но в окамле относительно нормальная практика кидать исключения для раннего выхода из цикла (там нет return/continue)

        Лучше б goto завезли, чтоб можно было из вложенных друг в друга циклов легко выпрыгивать
        Ответить
        • Функционально!
          Ответить
          • На окамле императивно можно писать, если что. Не то что хачкель какой-то
            Ответить
            • В хаскеле тоже можно, и память там руками можно. Но лучше не надо.
              Ответить
              • Только в Хаскеле лучше не надо, а в Окамле императивщина — основной стиль программирования.
                Ответить
    • показать все, что скрытолол, пхп такой пхп
      не язык, а сплошная стыдоба
      Ответить

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