views:

297

answers:

7

Actually, I am facing a codebase where developpers decided to use 'AND' and 'OR' instead of '&&' and '||'. I know that there is difference in operators precedence (&& goes before 'and'), but with given framework (prestashop to be precise) is clearly not a reason. So, my question: which version are you using? Is 'and' more readable than '&&'? || there is ~ difference?

+5  A: 

I think there is no specific reason/difference except for the precedence as you said. Programmers are more used to using && instead of and as this is the case in most programming languages. The and and or is more readable and human than && and || but this should not be a problem for programmers. I don't see any particular reason why they are using and and or for their project. I am not sure but there may be something with the speed meaning && and || might be faster than their other counter-parts. Interestingly, this is the case with CodeIgniter (PHP framework) too.

Sarfraz
PhiLho
It could be one of the points to clarify in php coding standards (but it seems that PHP Standards Working Group is not active)
ts
A: 

I don't know if there's a precedence difference between && and AND but I really believe that && is faster than AND since it's more "machine language" than AND and lots of other languages don't accept AND or OR logical operators.

TiuTalk
David Gelhar
+5  A: 

Depending on how it's being used, it might be necessary and even handy. http://php.net/manual/en/language.operators.logical.php

// "||" has a greater precedence than "or"

// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;

// The constant false is assigned to $f and then true is ignored
// Acts like: (($e = false) or true)
$f = false or true;

But in most cases it seems like more of a developer taste thing, like every occurrence of this that I've seen in CodeIgniter framework like @Sarfraz has mentioned.

Infinity
+1  A: 

I guess it's a matter of taste, although (mistakenly) mixing them up might cause some undesired behaviors:

true && false || false; // returns false

true and false || false; // returns true

Hence, using && and || is safer for they have the highest precedence. In what regards to readability, I'd say these operators are universal enough.

nuqqsa
A: 

Hi,

Normally The people who are as Microsoft(VB and .Net) developers always use "AND" and "OR" since it those languages need not to be a Case Sensitive, But the people who are in C, C++, PHP, JAVA are always used "&&" and "||" since those languages are Case Sensitive.

This is what my taught...

VAC-Prabhu
+3  A: 

If you use AND and OR, you'll eventually get tripped up by something like this:

$this = true;
$that = false;

$truthiness = $this and $that;

Want to guess what $truthiness equals?

If you said false... bzzzt, sorry, wrong!

$truthiness above has the value true. Why? = has a higher precedence than and. The addition of parentheses to show the implicit order makes this clearer:

($truthiness = $this) and $that

If you used && instead of and in the first code example, it would work as expected and be false.

R. Bemrose
A: 

which version are you using?

If the coding standards for the particular codebase I am writing code for specifies which operator should be used, I'll definitely use that. If not, and the code dictates which should be used (not often, can be easily worked around) then I'll use that. Otherwise, probably &&.

Is 'and' more readable than '&&'?

Is it more readable to you. The answer is yes and no depending on many factors including the code around the operator and indeed the person reading it!

|| there is ~ difference?

Yes. See logical operators for || and bitwise operators for ~.

salathe