Берегитесь операторов and, or и not в Ruby
Илья • 21 сентября 2007 г.
С виду безобидные операторы and, or и not могут привести к очень загадочным ошибкам в вашем приложении.
Вот две строчки одинакового кода. В первой строке используются операторы || и &&, а во второй операторы or и and. Как видите, результат не совпадает:
Всё
Что самое неприятное, операторы and и or стоят по приоритету даже ниже чем оператор =, а это может создать в коде ошибки следующего типа:
Такой же код, но с оператором || вместо or:
Теперь всё работает как надо.
Итак, старайтесь заменять операторы and, or и not на &&, || и !. Конечно, вторая тройка не такая красивая и читабельная, но читабельность того не стоит.
4 комментария:
Извините, но комментарии для этой статьи уже закрыты.

Так скорее нужно опасаться операторов || && С and и or как раз понятно, да и скобки добавляют выразительности. Читабильность стоит того чтобы ей уделять внимания.
2 Сергей: Я не понял что вы имеете ввиду. Почему стоит опасаться оператора &&?
Ну вообще даже в гайдлайнах рельсов написано «не юзайте and и or, юзайте только || и &&»
Опасайтесь своей лени! В любой книге написано, что используйте скобки для расстановки приоритетов! Так же написано, что оператор присваивания имеет более высокий приоритет. И ещё существует таблица приоритетов… Страдают ленивые.