http://www.refactoring.com/catalog/decomposeConditional.html
In other words, take a complex condition, like "if x and y and not z" and ExtractMethod the condition into a meaningful function -- like "if thisCustomerIsEligibleForADiscount".
[And a different but related issue based on the example at the link above...]
Also "if not ... else" ConsideredHarmful:
Instead of
if (notSummer(date))
charge = winterCharge(quantity);
else
charge = summerCharge(quantity);
consider
if (isSummer(date))
charge = summerCharge(quantity);
else
charge = winterCharge(quantity);
or
if (isWinter(date))
charge = winterCharge(quantity);
else
charge = summerCharge(quantity);
The first reads as "if not summer do the winter charge else do the summer charge." The second reads as "if it is summer do the summer charge, else do the winter charge."
else statements that are a double negative are difficult to understand.
see also ElseConsideredSmelly