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