Practice: Comparing a boolean literal to a boolean result.
Example (in C): Let b be some expression having a boolean value (say, v1 > v2).
if (b) ...
is better than
if (b == TRUE) ...
and
if (!b) ...
is better than
if (b == FALSE) ....
Discussion: Booleans are sometimes referred to as “conditionals” in pre-ANSI C and have the type LOGICAL in Fortran. The ANSI C standard guarantees that the result of a comparison always returns either TRUE (1) or FALSE (0). So were we to write
if ((v1 > v2) == TRUE) ...
we would be comparing v1 and v2, which comparison would result in either TRUE or FALSE, which is fine, but then we would be further comparing that TRUE-or-FALSE result with the literal boolean value TRUE, which adds nothing useful to the more succint
if (v1 > v2) ...
Objection: Some suggest that comparisons of boolean results with TRUE or FALSE is more readable.
Answer: Were
((v1 > v2) == TRUE)
more readable than
(v1 > v2),
it follows that
(((v1 > v2) == TRUE) == TRUE)
would be even more readable, and
((((v1 > v2) == TRUE) == TRUE) == TRUE)
more readable still, with further “improvements” in readability left as an exercise to the reader.
Copyright © 2008 Possum Technologies, All Rights Reserved.
RSS - Posts