Oliver Smith sends this representative line:
bool long_name_that_maybe_distracted_someone()
{
return (execute() ? CONDITION_SUCCESS : CONDITION_FAILURE);
}
Now, we’ve established my feelings on the if (condition) { return true; } else { return false; }
pattern. This is just an iteration on that theme, using a ternary, right?
That’s certainly what it looks like. But Oliver was tracking down an unusual corner-case bug and things just weren’t working correctly. As it turns out, CONDITION_SUCCESS
and CONDITION_FAILURE
were both defined in the StatusCodes
enum.
Yep- CONDITION_FAILURE
is defined as 2. The method returns a bool
. Guess what happens when you coerce a non-zero integer into a boolean in C++? It turns into
true
. This method only ever returns true
. Ironically, the calling method would then do its own check against the return value, looking to see if it were CONDITION_SUCCESS
or CONDITION_FAILURE
.