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

0

  1. 1
$update = !empty($id) and $id > 0;

Вопреки ожиданиям автора, выражение $id > 0 вообще никогда не принимается во внимание.
/* Ознакомьтесь с приоритетом операций */
Сначала отработает $update = !empty($id)
потом значение из $update будет сравниваться с $id > 0 и результат сравнения никуда не попадёт.

Рекомендация: используйте && вместо оператора "and".

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

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

  • Достаточным было бы использовать скобочки для данной операции.

    $update = ( !empty($id) and $id > 0 );
    Ответить
    • Верно. Использование скобок вернёт смыл этому коду, и в данном конкретном случае это будет даже наглядно показывать намерения программиста. Однако если скобок много в одном месте (и ещё они вложенные) и проч. код сразу перестаёт читаться. Всё же следуйте рекомендации - используйте && и не парьтесь.
      Ну уж если вы великий гуру и пишете только конкретный код только для себя - пожалуйста, можете даже использовать && и "and" в одном выражении.
      Ответить
    • Внезапно! И в перле тоже && приоритетнее =, который приоритетнее AND. Долой языки программирования, долой компьютеры, даёшь натуральное хозяйство!
      Ответить
    • И в Ruby «=» имеет больший приоритет нежели «and». 😉
      Ответить
        • Чтобы можно было сделать так:
          b = 10
          d = 20
          if a = b and d == 20 then
          	puts a # а имеет значение 10
          end

          Возможность есть, а стоит ей пользоваться — каждый решает сам.
          Ответить
          • А если использовать &&, то:
            if a = b && d == 20 then # эквивалентно a = ( b && d == 20 )
            	puts a # теперь это — true
            end
            Ответить
          • во-первых, присваивание в большинстве случаев лучше выносить в отдельный оператор. Особенно учитывая, что довольно частая описка = вместо ==.
            во-вторых, лишняя пара скобок - не такая уж избыточность.
            Ответить
            • Что куда лучше выносить — зависит от задачи. Язык дает возможности, а мы уже решаем, какие возможности подходят под задачи. 😉

              А есть еще битовые операции: & и |, которые синтаксически напоминают логические. 🙂
              Ответить
              • может быть ) но в приоритетах можно и запутаться
                а с битово-логическими путаницы нет )
                Ответить
                • Запутаться можно лишь по незнанию, а не по невнимательности. Ведь с тем, что у && приоритет выше, чем у || мало у кого возникают трудности. 😉
                  Ответить
    • Вы не поверите, но в Руби && и and работают точно так же
      Тоже дебильный язык, да?
      Ответить
      • я им как раз начал интересоваться. Пока не дал оценку, но на первый взгляд, пугает )
        Ответить
        • На мой взгляд там много вкуснстей, но слишком много синтаксического сахара
          Ответить
      • Язык не дебильный, он тут вообще не при чём.
        Говнокод пишет быдлокодер а не язык.
        Ответить
          • смысл в том, что некоторые языки привлекают быдлокодеров
            Ответить
            • Сможете упорядочить языки по атрибуту привлекательности для быдлокодеров?
              Ответить
              • сходу вижу два три критерия:
                * нижайший порог вхождения
                * за работу на языке X платят хоть какие-то деньги
                * не эзотерический (важно чтобы существовали источники копипасты)
                Ответить
                • 1. низкий порог вхождения - когда язык позволяет делать многое, и с огрехами прога работает, не читая мануала
                  2. очень популярный язык - и работа найдется, и на форумах можно лезть с любым вопросом, не читая мануала

                  на данный момент, это
                  1. пхп
                  2. ява
                  3. дельфи (паскаль)
                  4. си-решетка
                  Ответить
                  • > на данный момент
                    на данный момент есть эмпирические данные, теперь надо вывести теорию

                    будет теория - сделаем
                    0. Visual Bydlol
                    Ответить

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

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

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


    8