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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    //***Никогда не использовать))))
    	static function isset_not_empty($val){
    		if(isset($val) and !empty($val)) return true;
    		return false;
    	}

    погорячившийся))

    Запостил: govnarkod, 06 Апреля 2013

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

    • хуйня
      Ответить
    • Не, реально заебало проверять на пустоту каждый раз как проверяю на существование, таких разов 80% при проверке на существование, это решение или говно код?
      Ответить
      • спокойно пиши !empty($val)
        Ответить
        • Действительно, работает и не вылетает в ошибки даже если не установлена, спасибо ! Говновопрос закрыт.
          Ответить
          • > и не вылетает в ошибки даже если не установлена
            это документированное поведение. т.е. rtfm
            Ответить
          • Вообще в данном случае isset() на аргументе метода не имеет смысла. Во-первых оно уже ругнулось когда методу передали несуществующую переменную. Во-вторых true оно вернёт только когда $var === NULL - то же сделает и empty().
            Ответить
            • [i]Во-вторых true оно вернёт только когда $var === NULL - то же сделает и empty().[\i]
              Не вижу почему. Можно поподробнее?
              Пардон если напрягаю, я осознаю что говнокод чисто чтоб поржать да посрать, а не подумать и помоч.
              Кстати где-то уже поднимался вопрос чтобы расширить говнокод.ру разделом где обсуждаются размышления над кодом, он так и не созрел?
              Ответить
              • Потому что RTFM © Lure of Chaos.
                http://www.php.net/manual/en/function.isset.php : Returns TRUE if var exists and has value other than NULL, FALSE otherwise.
                Т.е. FALSE можно получить только если переменной нет или она равна NULL. Т.к. она объявлена аргументом метода - то она уже есть, так что остаётся только вариант NULL. :) Ну... Если внутри метода не сделать unset($var). :)
                Ответить
                • О, так я там опечатался выше. Извиняюсь. Конечно же, при $var === NULL isset() вернёт FALSE.

                  Ну и ещё заметка про говнокодистость: if(cond)return true; else return false - говно. return cond; Для наглядности здесь: function isset_not_empty($var) { return isset($var) && !empty($val); } Кстати, обрати внимание на && вместо and, у них приоритеты разные... С and-ом получился бы аналог return isset($var)
                  Ответить
                  • Хорошо, что очепятка, а то стало быть подумал что упустил что то фундаментально важное ).
                    if(cond)return true; else return false - говно.
                    Вот за это отдельное спасибо, действительно бессмыслено.
                    Ответить
                    • Воистину когда пишешь код не на секунду нельзя терять бдительности! Обычно же наоборот хуячишь на автомате в погоне за смысловыми абстракциями
                      Ответить
                  • return isset($var) and !empty($val);

                    Тоесть он забил бы на часть после and?
                    Вот так подводный булыжник бля
                    Ответить
                    • Да нет, он выполнит ту часть... Но после return-а. :)
                      Ответить
                      • А не, вру. Проверил сейчас. return таки последним выполняется. Но вообще не советую ими пользоваться. Иногда только удобно для быстрого теста написать нечто типа $some_func_result = some_func() and do_something_if_func_is_true();
                        Ответить
                        • and он своей читаемостью подкупает, читаешь как текст, а && понятно конечно и красиво, но не по фен-шую)
                          Ответить
      • Беда современных погроммистов в том, что они не читают мануал, в котором английским по bgcolor написаны все ответы на интересующие их вопросы (кроме Главного Вопроса Жизни, Вселенной и Всего Остального).
        Вместо этого погроммисты ходят в чятики и форумы, в надежде на ответы гуру.
        Lure Of Chaos благое дело делает, тебе на него молиться надо.
        Ответить
    • Если верить http://phpsadness.com/sad/28
      внутри оно так и есть:
      void zend_do_isset_or_isempty(int type, znode *result, znode *variable TSRMLS_DC)
      {
          ...
      }
      Ответить

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