Good compilers will warn you.
Extend this to functions as well.
I had a bug like
if (foo(b == A))
instead of
if(foo(b) == A)
Extend this to functions as well.
I had a bug like
if (foo(b == A))
instead of
if(foo(b) == A)
Even most bad compilers warn about this now.
puts 'argh' if a = 'b' warning: found = in conditional, should be ==
<?php
if (false !== ($pos = strpos($haystack, $needle))) {
doSomethingWith($haystack, $pos);
}
?>
I find the constant first notation to be very friendly, btw. It's not as natural when translated into English normally, but in terms of logic, it makes sense to think of the first part of the test condition as its own little predicate: // Generic language
bool matchesMyConstantValue(val) {
return MY_CONSTANT_VALUE == val;
} if ($result = $o->someMethod()) {
// Do Something with $result, the method returned a value that cast to true
}if ( !method_returns_rc( args ) ) { //error handle }
This isn't great, as I believe its not good to put methods with side effects in if statements (may be wrong here, or maybe its just me), but generally thats how its done (not to say that there aren't freaking GOTOs in our code... so take that with a grain of salt.)
I find assignment-in-conditional more useful in loops than if's, since you can't just plonk the assignment on the previous line.