This is a minor style question, but every bit of readability you add to your code counts.
So if you've got:
if (condition) then
{
// do stuff
}
else
{
// do other stuff
}
How do you decide if it's better like that, or like this:
if (!condition) then
{
// do other stuff
{
else
{
// do stuff
}
My heuristics are:
- Keep the condition positive (less mental calculation when reading it)
- Put the most common path into the first block
I prefer the first one. The condition should be as simple as possible and it should be fairly obvious which is simpler out of condition and !condition
!full == empty
)I'm horrible when it comes to how I set up if statements. Basically, I set it up based on what exactly I'm looking for, which leads everything to be different.
if (userinput = null){
explodeViolently();
} else {
actually do stuff;
}
or perhaps something like
if (1+1=2) {
do stuff;
} else {
explodeViolently();
}
Which section of the if/else statement actually does things for me is a bad habit of mine.
Two (contradictory) textbook quotes:
--Allen Holub, "Enough Rope to Shoot Yourself in the Foot", p52
--Steve McConnell, "Code Complete, 2nd ed.", p356
Intel Pentium branch prediction pre-fetches instructions for the "if" case. If it instead follows the "else" branch: it has the flush the instruction pipeline, causing a stall.
If you care a lot about performance: put the most likely outcome in the 'if' clause.
Personally i write it as