Else If chaining with unrelated expressions is bad style

Related expression chaining is GOOD

if (a == A)
    X;
else if (a == A2)
    Y;
else
    Z;

Unrelated expression chaining is BAD

if (a == A)
    X;
else if (b == B)
    Y;
else
    Z;

Nested Equivalent

if (a == A)
    X;
else
{
    if (b == B)
    {
        Y;
    }
    else
    {
        Z;
    }
}

Equivalence

| Chained | Nested | |:—————————————————————- | ———————————————————————————————— | | if (A) X; else if (B) Y; else Z; | if (A) X; else { if (B) Y; else Z; } |

Truth table

A B Chained Nested
       
1 1 X X
1   X X
  1 Y Y
    Z Z

Links